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());

浙公网安备 33010602011771号