selenium webDriver 之 测试流的控制

上一篇 / 下一篇  2015-03-10 19:34:14 / 个人分类:原创

四、数据驱动测试

1、使用隐式的等待同步测试

当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常。

一旦设置了隐式等待,则它存在在整个WebDriver对象实例的生命周期中,但是隐式的等待会让一个正常响应的测试变慢,会在寻找每个元素的时候都进行等待。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

2、使用显示的等待同步测试

//设置等待时间10

WebDriverWait wait = new WebDriverWait(driver, 10);

//等待直到符合元素文本内容出现(locator指定的元素中是否存在text指定的文本信息。)

Wait.until(ExpectedConditions.textToBePresentInElement(locator, text)

3、使用自定义条件同步测试

3.1在指定时间内定位到指定元素。

WebElement message = wait.until(

New ExpectedCondition<WebElement>(){

         PublicWebElementapply(WebDriver d){

                   Return d.findElement(By.cssSelector(“#myDiv p”));

         }

});

3.2等待元素的属性值改变

Boolean classname = wait.until(

New ExpectedCondition<Boolean>(){

         PublicBooleanapply(WebDriver d){

                   Return d.findElement(By.cssSelector(“.jq-codeDemo p”))

                                     .getAttribute(“class”)

                                     .contains(“ohmy”);

         }

});

3.3等待元素变为可见

(new WebDriverWait(driver, 10)).until(

new ExpectedCondition<Boolean>(){

                  publicBooleanapply(WebDriver d){

                            return d.findElement(By.id(“page4”)).isDisplayed();

                  }

});

3.4等待DOM的事件

(new WebDriverWait(driver, 10)).until(

         New ExpectedCondition<Boolean>(){

Public Boolean apply(WebDriver d){

JavascriptExecutor js = (JavascriptExecutor) d;

Return (Boolean) js.executeScript(“returnjQuery.active== 0”);
}

}

)

4、检查元素是否存在

在进行下一步操作的时候检查页面的元素是否存在,对于构建一个稳定的测试是很有帮助的。

private boolean isElementPresent(By by) {

try {

driver.findElement(by);

return true;

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

5、检查元素的状态

isEnable()         检查元素是否可用

isSelected()     检查元素是否被选中

isDisplayed()   检查元素是否可见

6、通过名称识别和处理一个弹出窗口

包括:识别弹出窗口,将driver转到新的窗口,在新的窗口中执行测试步骤,然后再跳转回最初的窗口。

通过name属性或窗口的句柄handle来识别窗口。

需要先保存父窗口——关闭子窗口后——再返回到父窗口

7、通过标题识别和处理一个弹出窗口

getTitle()

8、通过网页内容识别和处理一个弹出窗口

getPageSource().contains(“”)——这种方法速度比较慢。

9、处理一个简单的JavaScript警告框

WebDriver提供了Alert类来处理JavaScript警告框。

Alert alertBox = driver.switchTo().alert();

alertBox.accept();

alertBox.getText()得到警告框上的信息。

10、处理一个确认框(选择OKCancel按钮)

alertBox.accept();//点击确认按钮

alertBox.dismiss();//点击取消按钮

11、处理一个提示框

(除了确认和取消按钮之外,还可以用来让用户进行数据输入操作)

Alert promptAlert = driver.switchTo().alert();

//输入一些数据

promptAlert.sendKeys("洛阳亲友如相问,就说我在写代码");

//点击确定按钮

promptAlert.accept();

12、识别处理框架(frame

---可通过IDname识别框架

Driver.switchTo().frame(“id or name”);//通过IDname定位到frame

Driver.switchTo().defaultContent();//进行了一次跳转后需要先定位到默认框架中,在跳转到其他框架

---还可以通过索引index来获取焦点

13、通过页面内容识别和处理框架

Driver.switchTo().frame();

Driver.getPageSource().contains(“middle”);

14、处理iframe

如果iframe存在父框架,需要先找到父框架,再定位到iframe

如:

//首先获得父窗口

driver.switchTo().frame("left");

//取得iframe元素

WebElement weiboIframe. =driver.findElement(By.tagName("iframe"));

//获得iframe窗口

driver.switchTo().frame(weiboIframe);

 


TAG:

 

评分:0

我来说两句

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 18323
  • 日志数: 25
  • 建立时间: 2014-11-10
  • 更新时间: 2015-03-12

RSS订阅

Open Toolbar