Selenium | 引用WebElement时报错stale element reference: element is not attached to the page document
当项目中需要断言文本是否在元素列表的文本集中时,在对元素列表中的元素for循环遍历进行WebElement.text 操作时,随机性的出现state element reference的报错信息
源代码如下:
def assertIsInTextSet(self,locator,expect,isIn=True):elems = self.findElements(locator)elems_text = [elem.text for elem in elems]try:if isIn:assert expect in elems_textelse:assert expect not in elems_textexcept AssertionError as e:loggerHandler.logger.error('断言失败')raise e
报错信息如下:
stale element reference: element is not attached to the page document
过时的元素引用:元素未附加到页面文档
执行步骤: assertIsInTextSet(("xpath","//div[@class='s-table-header-wrapper']/table/thead/tr/th/div[@class='cell']"),"IP地址",False)
POST http://127.0.0.1:52589/session/8350c4f258317a9129c5da4bcf344a59/elements {"using": "xpath", "value": "//div[@class='s-table-header-wrapper']/table/thead/tr/th/div[@class='cell']"}
http://127.0.0.1:52589 "POST /session/8350c4f258317a9129c5da4bcf344a59/elements HTTP/1.1" 200 643
Finished Request
GET http://127.0.0.1:52589/session/8350c4f258317a9129c5da4bcf344a59/element/cc580c5f-9a67-4133-a773-02cd605f17d9/text {"id": "cc580c5f-9a67-4133-a773-02cd605f17d9"}
http://127.0.0.1:52589 "GET /session/8350c4f258317a9129c5da4bcf344a59/element/cc580c5f-9a67-4133-a773-02cd605f17d9/text HTTP/1.1" 404 1088
Finished Request
测试用例运行失败, 错误信息是: Message: stale element reference: element is not attached to the page document(Session info: chrome=98.0.4758.102)
根据报错信息可以分析出,for循环获得的元素列表只是元素在DOM中的唯一ID列表,当执行到element.text 获取元素文本信息时,会再次根据元素的唯一ID发起http请求获取text,这一点在selenium源码中也得到了验证。页面元素不断在渲染,导致元素会发生变化,所以当引用的元素在页面DOM发生变化后获取相关信息就会报引用错误的信息。
部分源码如下:
@property
def text(self):"""The text of the element."""return self._execute(Command.GET_ELEMENT_TEXT)['value']
所以,要解决这个问题,就必须保证元素是最新的!即:在每次引用前重新定位获取新的ID即可
修改后的源码如下:
def assertIsInTextSet(self,locator,expect,isIn=True):elems = self.findElements(locator)elems_text = [self.findElements(locator)[index].text for index in range(len(elems))]try:if isIn:assert expect in elems_textelse:assert expect not in elems_textexcept AssertionError as e:loggerHandler.logger.error('断言失败')raise e
Selenium | 引用WebElement时报错stale element reference: element is not attached to the page document相关推荐
- 关于报错stale element reference: element is not attach
1.现象 在执行脚本时,有时候引用一些元素对象会抛出如下异常 org.openqa.selenium.StaleElementReferenceException: stale element ref ...
- selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element
在输入框输入内容,点击[查询],然后点击页面上的[处理],并进行点击时,报错,报错内容如下. selenium.common.exceptions.StaleElementReferenceExcep ...
- [python] Message: stale element reference: element is not attach to the page document
1.前言 通过selenium中find_elements_by_partial_link_text()函数获取网页中符合条件的链接文本列表,并挨个点击,出现了如下两种错误. 2.准备 2.1.手写H ...
- Message: stale element reference: element is not attached to the page document
背景:获取一组按钮,数量不确定,得到所有按钮A之后使用get_attribute("innerHTML")获取xpath并用A.find_element来获取每个按钮 代码如下: ...
- stale element reference: element is not attached to the page document 异常
stale element reference: element is not attached to the page document 异常 参考文章: (1)stale element refe ...
- qt creator编译qt工程时报错:undefined reference to
qt creator编译qt工程时报错:undefined reference to qt creator编译qt工程时报错 该错误指向了本地文件,且经过调研知道,该类错误一般都是链接问题. 仔细查看 ...
- element is not attached to the page document报错解决办法
element is not attached to the page document报错解决办法 1.场景:将一条子单记录合并到母单记录,子单记录消失后,再次定位母单记录的操作按钮,报错 代码如下 ...
- Selenium+PhantomJS使用时报错原因及解决方案
问题 今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium support for PhantomJS has been dep ...
- 【Selenium】stale element reference 问题解决方案
问题现象 如截图所示,异常原因:stale element reference: element is not attached to the page document 用例执行环境 java 1. ...
最新文章
- float python_Python中float('INF')的使用
- 我的世界java有三叉戟杀手吗_我的世界-三叉戟竟能这么用 这样得怪物头颅长见识了!...
- ORACLE数据库表空间备份方案
- 反射获取空参数成员方法并运行
- 【Java语法】DateFormat时间格式转化、java.util.Date和java.sql.Date之间的相互转化
- uCOS:时钟节拍代码追踪
- plotly django_使用Plotly为Django HTML页面进行漂亮的可视化
- elasticsearch7使用指导
- Dubbo学习总结(6)——Dubbo开源现状与未来规划
- python 托盘_[宜配屋]听图阁
- CentOS 8安装logrotate切割日志
- SpringMVC中404错误解决方法总结
- 图画日记怎么画_期末到了,孩子不会复习,可以试试画思维导图的方法
- 小米9开发版自带root吗_怎么获取root权限-小米CC9和小米CC9美图版刷入MIUI开发版,获取完美ROOT权限功能...
- 周赛-mZY寻宝(bfs搜索)
- MySQL报错: Incorrect string value: '\xE5\x85\xA8\xE7\x90\x83...' for column 'cname' at row 1
- Netty高级进阶之基于Netty的Websocket开发网页聊天室
- TypeError: AMap.MouseTool is not a constructor TypeError: AMap.MouseTool is not a constructor
- VMware Workstation Ubuntu 20.04 LTS无法连接网络问题
- PPT文件限制编辑如何取消