封裝Selenium調(diào)用
與任何編程一樣,你需要使用工具函數(shù)來(lái)處理在測(cè)試代碼中重復(fù)的函數(shù)。避免重復(fù)的方法之一是封裝常用的Selenium方法的調(diào)用。例如,測(cè)試時(shí)經(jīng)常點(diǎn)擊頁(yè)面上的元素,等待頁(yè)面加載。
selenium.click(elementLocator);
selenium.waitForPageToLoad(waitPeriod);
為了不重復(fù)上述代碼,你可以寫(xiě)一個(gè)包裝方法實(shí)現(xiàn)這兩個(gè)功能。
/**
* Clicks and Waits for page to load.
*
* param elementLocator
* param waitPeriod
*/
public void clickAndWait(String elementLocator, String waitPeriod) {
selenium.click(elementLocator);
selenium.waitForPageToLoad(waitPeriod);
}
● 判斷元素存在的“安全操作”
另一種常見(jiàn)的封裝Selenium的方法,在執(zhí)行進(jìn)一步操作前檢查頁(yè)面上的元素存在性。這有時(shí)被稱(chēng)為“安全操作”。例如,下面的方法可用于實(shí)現(xiàn)一個(gè)依賴(lài)期望的元素存在的安全操作。
/**
* Selenum-RC -- Clicks on element only if it is available on page.
*
* param elementLocator
*/
public void safeClick(String elementLocator) {
if(selenium.isElementPresent(elementLocator)) {
selenium.click(elementLocator);
} else {
// Using the TestNG API for logging
Reporter.log("Element: " +elementLocator+ ", is not available on page - "
+selenium.getLocation());
}
}
上述例子使用的是Selenium 1.0 API,Selenium 2.0同樣支持安全操作。
/**
* Selenium-WebDriver -- Clicks on element only if it is available on page.
*
* param elementLocator
*/
public void safeClick(String elementLocator) {
WebElement webElement = getDriver().findElement(By.XXXX(elementLocator));
if(webElement != null) {
selenium.click(elementLocator);
} else {
// Using the TestNG API for logging
Reporter.log("Element: " +elementLocator+ ", is not available on page - "
+ getDriver().getUrl());
}
}
在第二個(gè)例子中,’XXXX’方法是一個(gè)占位符,可以用元素定位方法進(jìn)行替換。
使用安全方法取決于測(cè)試開(kāi)發(fā)人員的決定。因此,如果測(cè)試需要繼續(xù)執(zhí)行,即使知道頁(yè)面上一些元素沒(méi)有發(fā)現(xiàn),這時(shí)可以使用安全方法,并發(fā)送一條缺少元素的消息到日志文件。這基本上等于實(shí)現(xiàn)了帶報(bào)告機(jī)制的驗(yàn)證,而不是一個(gè)失敗終止執(zhí)行的斷言。但是,如果元素必須在頁(yè)面上出現(xiàn),以便能夠執(zhí)行進(jìn)一步的操作(如一個(gè)門(mén)戶(hù)網(wǎng)站主頁(yè)上的登錄按鈕),這時(shí)安全方法技術(shù)不應(yīng)該被使用。
本文轉(zhuǎn)載自:http://www.loggingselenium.com/