基于selenium 获取新页面元素失败的解决方法
2018-05-21 09:06
761 查看
当我们使用selenium 实现模拟登陆时,获取到登陆按钮元素后,直接调用它的click()方法就能实现登陆跳转,并且此时的webDriver 也是指向
当前页面,这个是没问题的,不过需要注意的是因为页面加载速度一般小于程序运行速度,所以在获取登陆后页面的元素之前,可以用WebDriverWait的util方法解决,也可以直接通过Thread.sleep()让程序睡眠一会(不推荐)。
但是博主要说的重点是如果我们是通过点击普通超链接进入到新页面,那么通过上面的方法是获取不到新页面元素的,因为此时的webDriver 依然指向之前的页面,
解决方法:首先获取窗口的所有句柄,然后遍历这个句柄集合,直到存在句柄(handle)与当前窗口的句柄(currentHandle)不一样,将之前的webDriver 转到新的句柄(handle)所指向的页面。
代码如下:
String currentWindow=driver.getWindowHandle(); //获取当前窗口的句柄 Set<String> handles=driver.getWindowHandles(); //获取所有窗口的句柄 Iterator<String> it=handles.iterator(); WebDriver newDriver=null; while (it.hasNext()){ String handle=it.next(); if(!handle.equals(currentWindow)){ driver=driver.switchTo().window(handle); //切换到新的句柄所指向的窗口 break; } }
以上这篇基于selenium 获取新页面元素失败的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 解决关于selenium 获取新页面元素失败的问题
- selenium获取页面元素方法归纳总结
- 页面中包括DataGridj时,利用webclient获取页面源代码的解决方法
- iScroll4 禁止select等页面元素默认事件的解决方法 转
- 使用CInternetSession获取utf-8页面中文乱码问题解决方法
- 解决页面中不让提交按钮获取焦点的方法,
- Ajax获取页面被缓存的解决方法
- 备忘:解决ajax获取页面直接显示乱码的方法 [摘]
- CS文件不能获取前台页面的服务器控件解决方法
- 获取页面某一元素的绝对X,Y坐标,可以用offset()方法
- 各种浏览器下的页面元素xpath获取方法
- Selenium定位页面元素的方法
- jQuery获取各页面中的元素方法
- 在进行页面的DIV CSS排版时,遇到IE6(当然有时Firefox下也会偶遇)浏览器中的图片元素img下出现多余空白的问题绝对是常见的对于该问题的解决方法也是“见机行事”。
- 遍历获取ASP.NET页面控件的名称及值 后台调用前台javascript方法报错:“缺少对象”的解决方法 xml与DataSet的互转换类
- iScroll4 禁止select等页面元素默认事件的解决方法
- 关于获取页面元素的二进制数据并再次上传的问题的解决
- 解决ajax获取页面直接显示乱码的方法
- Selenium 2.31 服务端启动失败,4444端口被占用的解决方法
- JS实现网页开窗刷新 GeT传递参数成功 远程打开页面失败的解决方法