selenium webdriver 学习总结-Selenium 控制测试流(五)

来源:互联网 发布:淘宝改差评话术 编辑:程序博客网 时间:2024/06/06 17:11

一、同步测试流

1、隐式等待(不常用)

此等待方式是在查找元素时,元素没有立即出现,将等待指定时间后再去查找DOM,默认为0,一旦设置后,将存在webDriver对象的生命周期中

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

此方法表示如果查找的元素没有立即出现,将等待10s后再去查找DOM,如果元素10s后还不存在,则抛出异常


2、显示等待(常用)

相比隐式等待,此方法效率较高,当指定元素没有立即出现时,它会在指定时间范围内,500ms进行一次查找,超出指定时间,则抛出异常

WebDriverWait 和 ExpectedConditions 类执行显示等待

ExpectedConditions类提供了很多预定义好的条件来等待,下面介绍几个比较常用的条件

a. presenceOfElementsLocatedBy(By locator)

此条件是检查某个元素出现在dom中,示例如下:

WebDriverWait wait = new WebDriverWait(driver,10);
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("hello")));

该示例是在检查id为hello的元素是否存在,如果存在返回这个元素,返回值有两种,一是boolean值,二是WebElement对象

b .titleContains(java.lang.String title)

WebDriverWait wait = new WebDriverWait(driver,10);
Boolean flag = wait.until(ExpectedConditions.titleContains("hello"));

        该示例是在检查当前页面标题是否包含hello,返回boolean值

c. visibilityOfElementLocated(By locator)

同上操作,返回值为WebElement对象


3、自定义条件等待(常用)

WebDriverWait wait = new WebDriverWait(driver,5);

WebElement hello = wait.until(

   new ExpectedCondition(){

public WebElement apply(WebDriver driver){

return driver.findElement(By.cssSelector("#username"));

}

    }

);

二、检查元素的状态

WebElement类提供了以下方法帮助我们来检查某元素当前状态

1、isEnabled()检查元素是否启用

2、isSelected()检查元素是否被选中(单选框,多选框,下拉框)

3、isDisplay()检查元素是否可见


三、处理弹出窗口

1、通过窗口句柄来识别弹出窗口

String parentWindow = driver.getWindowHandle();//将父窗口句柄保存在parentWindow变量中

driver.getElementById("popUp").click();//单击popUp按钮,弹出新窗口

Set allHandle = driver.getWindowHandles();//得到当前打开的所有窗口

Iterator iter = allHandle.iterator();

while(iter.hasNext()){

String temp = iter.next();

if(!temp.equals(parentWindow)){

driver.switchTo.window(temp);

}

}

2、通过页面标题来识别弹出窗口

String parentWindow = driver.getWindowHandle();//将父窗口句柄保存在parentWindow变量中

driver.getElementById("popUp").click();//单击popUp按钮,弹出新窗口

Set allHandle = driver.getWindowHandles();//得到当前打开的所有窗口

Iterator iter = allHandle.iterator();

while(iter.hasNext()){

String temp = iter.next();

if(driver.switchTo.window(temp).getTitle.equals("helloworld")){

driver.switchTo.window(temp);

}

}


3、通过页面内容来识别弹出窗口

String parentWindow = driver.getWindowHandle();//将父窗口句柄保存在parentWindow变量中

driver.getElementById("popUp").click();//单击popUp按钮,弹出新窗口

Set allHandle = driver.getWindowHandles();//得到当前打开的所有窗口

Iterator iter = allHandle.iterator();

while(iter.hasNext()){

String temp = iter.next();

driver.switchTo.window(temp);

if(driver.getPageSource().contains("helloworld")){

break;

}

}

四、处理js弹出窗口

1、处理js警告框,通过webdriver提供的Alert类处理警告框

driver.findElementById("alert").click();//点击弹出警告框

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

alertBox.accept();

2、处理js确认框

driver.findElementById("alert").click();//点击弹出确认框

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

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

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


3、处理JS提示框

driver.findElementById("alert").click();//点击弹出确认框

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

alertBox.sendKeys("helloworld")//向提示框中输入“helloworld”

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

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


五、识别处理frame框架

1、通过id或者name处理frame框架

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

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

driver.switchTo().defaultContent(); //回到最初的页面

2、通过index来处理frame

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


六、识别处理iframe框架

step 1:

WebElement element = driver.findElementById("iframe");

step 2:

driver.switchTo().frame(element);


0 0
原创粉丝点击