C
頁面物件應包含行為,返回斷言資訊以及可能的初始化頁面就緒狀態方法。Selenium 使用註釋支援頁面物件。在 C#中,它如下:
using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;
using OpenQA.Selenium.Support.UI;
using System;
using System.Collections.Generic;
public class WikipediaHomePage
{
private IWebDriver driver;
private int timeout = 10;
private By pageLoadedElement = By.ClassName("central-featured-logo");
[FindsBy(How = How.Id, Using = "searchInput")]
[CacheLookup]
private IWebElement searchInput;
[FindsBy(How = How.CssSelector, Using = ".pure-button.pure-button-primary-progressive")]
[CacheLookup]
private IWebElement searchButton;
public ResultsPage Search(string query)
{
searchInput.SendKeys(query);
searchButton.Click();
}
public WikipediaHomePage VerifyPageLoaded()
{
new WebDriverWait(driver, TimeSpan.FromSeconds(timeout)).Until<bool>((drv) => return drv.ExpectedConditions.ElementExists(pageLoadedElement));
return this;
}
}
筆記:
CacheLookup
將元素儲存在快取中,並儲存每次呼叫返回一個新元素。這樣可以提高效能,但不適合動態更改元素。searchButton
有 2 個類名,沒有 ID,這就是為什麼我不能使用類名或 id。- 我確認我的定位器會使用開發人員工具(針對 Chrome)返回我想要的元素,在其他瀏覽器中,你可以使用 FireBug 或類似內容。
Search()
方法返回另一個頁面物件(ResultsPage
),因為搜尋單擊會將你重定向到另一個頁面。