1. 程式人生 > >JAVA自動化測試之頁面物件模型(Page Object)

JAVA自動化測試之頁面物件模型(Page Object)

    在做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();
}
}
(三)頁面巢狀物件

待續