封装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/