解决关于selenium 获取新页面元素失败的问题
来源:互联网 发布:妮维雅柔美润肤霜 知乎 编辑:程序博客网 时间:2024/05/22 02:24
当我们使用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; } }
阅读全文
1 0
- 解决关于selenium 获取新页面元素失败的问题
- 解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
- selenium中webdriver打开新页面无法获取页面元素
- 解决打开新页面的#page2页面问题
- 关于ajaxfileupload.js的上传打开新页面的问题
- 关于frameset帧页面跳转到新页面的问题
- 关于翻页时弹出新页面的问题
- selenium 打开一个新页面,获取数据后关闭
- 关于Selenium Grid2节点注册失败的原因及解决
- 关于摸态窗口,触发服务器事件会打开新页面的问题
- 关于chrome浏览器打开新页面覆盖原来页面的问题
- selenium+pyton关于判断元素是否存在的问题
- 关于python+Selenium定位元素出错的问题
- selenium 元素获取问题(1)
- 关于phonegap地理位置获取失败的问题
- 关于打开新页面或弹出窗口的详细介绍
- 前端学习笔记一:关于一个新页面的开发
- 关于js自动打开新页面被拦截的解决方法
- jna在tomcat中使用遇到问题
- RMQ入门——[kuangbin]RMQ练习
- 牛顿法与拟牛顿法
- 20170731-20170806C#工作学习周总结
- d3.js-做一个简单的图表
- 解决关于selenium 获取新页面元素失败的问题
- @RestController
- Linux下C++读写txt文件
- 2017.8.7 数学作业 思考记录
- 框架学习系列 mybatis 第十一篇 mapper映射文件之输入映射
- java反射机制的应用
- c/c++易错知识点整理2(预处理,const,static,sizeof)(上)
- UnityEvent和UnityAction
- 【swift】显示与隐藏tabBar