当项目中需要断言文本是否在元素列表的文本集中时,在对元素列表中的元素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相关推荐

  1. 关于报错stale element reference: element is not attach

    1.现象 在执行脚本时,有时候引用一些元素对象会抛出如下异常 org.openqa.selenium.StaleElementReferenceException: stale element ref ...

  2. selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element

    在输入框输入内容,点击[查询],然后点击页面上的[处理],并进行点击时,报错,报错内容如下. selenium.common.exceptions.StaleElementReferenceExcep ...

  3. [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 ...

  4. Message: stale element reference: element is not attached to the page document

    背景:获取一组按钮,数量不确定,得到所有按钮A之后使用get_attribute("innerHTML")获取xpath并用A.find_element来获取每个按钮 代码如下: ...

  5. 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 ...

  6. qt creator编译qt工程时报错:undefined reference to

    qt creator编译qt工程时报错:undefined reference to qt creator编译qt工程时报错 该错误指向了本地文件,且经过调研知道,该类错误一般都是链接问题. 仔细查看 ...

  7. element is not attached to the page document报错解决办法

    element is not attached to the page document报错解决办法 1.场景:将一条子单记录合并到母单记录,子单记录消失后,再次定位母单记录的操作按钮,报错 代码如下 ...

  8. Selenium+PhantomJS使用时报错原因及解决方案

    问题 今天在使用selenium+PhantomJS动态抓取网页时,出现如下报错信息: UserWarning: Selenium support for PhantomJS has been dep ...

  9. 【Selenium】stale element reference 问题解决方案

    问题现象 如截图所示,异常原因:stale element reference: element is not attached to the page document 用例执行环境 java 1. ...

最新文章

  1. float python_Python中float('INF')的使用
  2. 我的世界java有三叉戟杀手吗_我的世界-三叉戟竟能这么用 这样得怪物头颅长见识了!...
  3. ORACLE数据库表空间备份方案
  4. 反射获取空参数成员方法并运行
  5. 【Java语法】DateFormat时间格式转化、java.util.Date和java.sql.Date之间的相互转化
  6. uCOS:时钟节拍代码追踪
  7. plotly django_使用Plotly为Django HTML页面进行漂亮的可视化
  8. elasticsearch7使用指导
  9. Dubbo学习总结(6)——Dubbo开源现状与未来规划
  10. python 托盘_[宜配屋]听图阁
  11. CentOS 8安装logrotate切割日志
  12. SpringMVC中404错误解决方法总结
  13. 图画日记怎么画_期末到了,孩子不会复习,可以试试画思维导图的方法
  14. 小米9开发版自带root吗_怎么获取root权限-小米CC9和小米CC9美图版刷入MIUI开发版,获取完美ROOT权限功能...
  15. 周赛-mZY寻宝(bfs搜索)
  16. MySQL报错: Incorrect string value: '\xE5\x85\xA8\xE7\x90\x83...' for column 'cname' at row 1
  17. Netty高级进阶之基于Netty的Websocket开发网页聊天室
  18. TypeError: AMap.MouseTool is not a constructor TypeError: AMap.MouseTool is not a constructor
  19. VMware Workstation Ubuntu 20.04 LTS无法连接网络问题
  20. PPT文件限制编辑如何取消

热门文章

  1. win11无法运行脚本文件
  2. 详解小程序中的弹性布局
  3. linux造so及调用
  4. C++深度解析 类中的函数重载 -- 全局函数,普通成员函数,静态成员函数(28)
  5. 装修日记(7)施工公司选择篇 (续二)
  6. Python变量类型声明
  7. 记忆碎片,关于魔兽世界
  8. oracle锁表、解锁方法
  9. win10计算机光驱启动怎么办,在win10中,光驱盘符不显示怎么办?
  10. SSL 3.0 POODLE攻击信息泄露漏洞(CVE-2014-3566)