封裝Selenium調用
與任何編程一樣,你需要使用工具函數來處理在測試代碼中重復的函數。避免重復的方法之一是封裝常用的Selenium方法的調用。例如,測試時經常點擊頁面上的元素,等待頁面加載。
selenium.click(elementLocator);
selenium.waitForPageToLoad(waitPeriod);
為了不重復上述代碼,你可以寫一個包裝方法實現這兩個功能。
/**
* Clicks and Waits for page to load.
*
* param elementLocator
* param waitPeriod
*/
public void clickAndWait(String elementLocator, String waitPeriod) {
selenium.click(elementLocator);
selenium.waitForPageToLoad(waitPeriod);
}
● 判斷元素存在的“安全操作”
另一種常見的封裝Selenium的方法,在執行進一步操作前檢查頁面上的元素存在性。這有時被稱為“安全操作”。例如,下面的方法可用于實現一個依賴期望的元素存在的安全操作。
/**
* 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());
}
}
在第二個例子中,’XXXX’方法是一個占位符,可以用元素定位方法進行替換。
使用安全方法取決于測試開發人員的決定。因此,如果測試需要繼續執行,即使知道頁面上一些元素沒有發現,這時可以使用安全方法,并發送一條缺少元素的消息到日志文件。這基本上等于實現了帶報告機制的驗證,而不是一個失敗終止執行的斷言。但是,如果元素必須在頁面上出現,以便能夠執行進一步的操作(如一個門戶網站主頁上的登錄按鈕),這時安全方法技術不應該被使用。
本文轉載自:http://www.loggingselenium.com/