我正在使用Appium和机器人框架在安卓设备上进行自动化测试。我在Jenkins上创建调度运行。我的测试流程是在A页中输入一些数据并提交,然后切换到B页检查结果,然后切换到A页以输入新的数据。我在10+时重复这个循环。在4到5轮的时间里,一切都很好,但是在那之后,出现了一个错误:
StaleElementReferenceException: Message:缓存元素'By.xpath: //android.widgetT. exists @text=‘极限’不再存在于DOM中
TextView在页面A中。我监视着机器人,看到TextView出现了,但机器人没有看到它。我试着重新启动设备,但问题没有解决。我在互联网上搜索,发现一些人面临着同样的问题,但他们使用了不同的编程语言,比如Java或Python。我不知道下一步该做什么。
发展工具:
Appium版本: 1.21.0
机器人框架版本: 4.1.2 (Python3.10.0 on win32)
发布于 2022-06-07 17:28:20
首先,我不使用机器人框架,但是根据这个https://robocorp.com/docs/languages-and-frameworks/robot-framework/try-except-finally-exception-catching-and-handling,代码应该是相似的。
第二,我不确定这是否是最好的解决办法。我认为你可以用预期的条件类做一些事情,以“更干净的方式”来解决这个问题,但是我对它还不太熟悉,不足以展示/告诉你。相反,我所做的是这样的.
from selenium.common.exceptions import StaleElementReferenceException
while some_limiting_factor:
try:
# logic for submitting page A, assertions for page B
except StaleElementReferenceException:
element = driver.find_element('By.xpath: //android.widget.TextView[@text='Limit']' )尽管我非常希望在appium中缓存元素,但服务本身似乎不希望您这样做,至少在我的经验中是这样的。每次获得一个新的元素似乎确保了一个“缓慢但稳定”的测试。希望有一天有人能告诉我深藏的秘密。
https://stackoverflow.com/questions/71377077
复制相似问题