我有一段代码,它获取某个类的所有元素,并从中提取一个文本元素
chatblocks = driver2.find_elements_by_class_name("android.widget.TextView")
print(chatblocks)
chatblocktext = chatblocks[-3]
我目前在第3行收到StaleElementReferenceException
在第3行中调用.text函数是否再次运行find_elements函数?为什么这个陈旧的错误没有出现在第1行
要解决这个问题,将所有文本加载到第1行的列表中行吗?我试图这样做:
chatblocks = driver2.find_elements_by_class_name("android.widget.TextView").text
但是我收到了一个错误,说:文本不能用于列表对象
请参阅逐行执行
find_elements
将返回一个列表,在本例中,它是聊天区.text
现在请各位提问:
在第3行中调用
.text
函数是否再次运行find_elements
函数?为什么这个陈旧的错误没有出现在第1行find_elements
将返回一个webelement列表。在第1行,元素可用李>为此:
在列表中,您不能改为执行
.text
:find_element_by_class_name
检索web元素引用。像
element.click()
或element.text
这样的操作正试图通过此引用(指针)访问页面上的元素。他们不会试图根据元素的定位器再次找到元素,而是试图通过元素的引用来访问它。
如果从收集引用的那一刻起元素发生了更改,则在没有更多相关引用的情况下访问元素会引发
StaleElementReferenceException
异常。另外,
find_elements_by_class_name
检索web元素列表,而不是单个web元素。不能对对象列表应用
.click()
或.text
方法。您可以迭代列表并对列表中的每个元素应用命令,如下所示:
或
相关问题 更多 >
编程相关推荐