JAVA自動化測試之頁面物件模型(Page Object)
阿新 • • 發佈:2019-02-05
在做Selenium WebDriver 自動化測試時,我們可以使用頁面物件模型。這個模型可以使測試指令碼有更高的可維護性,減少了重複的程式碼,把頁面抽象出來。物件模型也提供了一個註釋,幫助快取遠端,避免出現元素過期的問題。
(一)分離頁面元素
public class BDPage { //定義元素變數 /**定義百度搜索的輸入框*/ @FindBy(id="kw") @CacheLookup public WebElement keyword_input; //建立一個建構函式,並且呼叫 PageFactory.initElements()方法來初始化元素。換句話說,將元素對映到我們定義好的變數上。 public BDPage(WebDriver driver){ PageFactory.initElements(driver, this); }
@FindBy:這個定義了你所查詢的元素是以什麼方式 定位的,比如圖中我用的是id,那麼就寫成 @FindBy(id="kw"),還有其他幾種寫法:@FindBy(name="xx")、@FindBy(className="xx")、@FindBy(xpath="xxx")、@FindBy(css="xxx")等等
@CacheLookup:意思是說找到元素之後將快取元素,重複的使用這些元素,將使測試的速度大大加快。
WebElement keyword_input:就是變數名
(二)分離頁面操作
測試類:public class HaoSouPage { /**@描述:好搜輸入框*/ @FindBy(name="q") @CacheLookup private WebElement HSP_INPUT_KEYWORD; /**@描述:好搜搜索按鈕*/ @FindBy(id="search-button") @CacheLookup private WebElement HSP_BUTTON_SEARCH; //定義測試地址 private final String url= "http://www.haosou.com/"; private static WebDriver driver; /提供一個外部獲得driver的方法 public WebDriver getDriver(){ return driver; } public HaoSouPage(){ driver= new FirefoxDriver(); PageFactory.initElements(driver, this); } //包裝退出方法 public void close(){ driver.quit(); } //開啟網址 public void openUrl(){ driver.get(url); } //輸入關鍵字selenium並點選查詢 public void searchByKeyword(){ HSP_INPUT_KEYWORD.sendKeys("selenium"); HSP_BUTTON_SEARCH.click(); } }
public class HaoSouPageTest {
@Test
public void searchTest(){
//例項化haosou頁面物件模型
HaoSouPage hsp=new HaoSouPage();
//使用頁面封裝的開啟連結方法
hsp.openUrl();
//使用頁面封裝的輸入操作
hsp.searchByKeyword();
//使用頁面封裝的退出操作
hsp.close();
}
}
(三)頁面巢狀物件
待續