web自动化的三大切换

元素有时在另一个页面里查找元素却报错找不到元素,可能是因为要查找的元素不在原来所在的页面。

一.iframe切换

有些定位元素定位不到,是因为元素在新的iframe页面里,但是driver还停留在原来的iframe

 1.切换到新的页面

webDriver.switchTo().frame(elementframe);

2. 回到上一级页面

页面返回上一级页面时,定位的元素在上一级的frame里,需要先将frame返回到上一级,才能找到元素

webDriver.switchTo().parentFrame();

3.回到默认页面

页面有时没有返回上一级而是直接返回首页(主页面),在首页面进行元素操作,frame需要返回到首页,元素才能被找到

webDriver.switchTo().defaultContent();

二.Alert切换

页面需要切换到alert才能定位alert上的元素

 1.得到alert

Alert alert=webDriver.switchTo().alert();

2.获取alert的提示信息

alert.getText()

3.Alert确认按钮

alert.accept();

4.Alert取消按钮

alert.dismiss();

三.Window切换

当点击一个超链接元素时,可能在当前窗口加载新页面,也可能加载一个新窗口加载页面。如果打开一个新的窗口,但是driver还停留在原来的窗口,需要通过切换driver的焦点才能定位到新窗口的元素。

1.根据传入新的句柄切换到新的窗口

webDriver.switchTo().window(handle)

2.找到新窗口的句柄

(1)句柄

窗口的标识,唯一,是一串字符串

(2)获取窗口句柄

driver.getWindowHandle();  //获取当前操作窗口的句柄 
driver.getWindowHandles();   //获取测试时打开的所有窗口句柄 

(3)获取新窗口的句柄

webDriver.get("https://www.baidu.com");
webDriver.findElement(By.partialLinkText("地图")).click();
//获取打开所有窗口的句柄,获取到的结果无序,用增强for循环
Set<String> handleafter=webDriver.getWindowHandles();
for (String handle:handleafter){
//已知新窗口的标题,如果当前窗口的标题和新窗口标题相等,退出
    if (webDriver.getTitle().equals("百度地图")){
        break;
//否则,切换窗口再继续循环
    }else {
        webDriver.switchTo().window(handle);
    }
}
//根据当前窗口的title验证是否切换到新窗口
System.out.println(webDriver.getTitle());

 

posted @ 2021-06-05 23:35  思佳丽  阅读(283)  评论(0)    收藏  举报