首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用机器人框架运行Appium时“缓存元素在DOM中不存在”

使用机器人框架运行Appium时“缓存元素在DOM中不存在”
EN

Stack Overflow用户
提问于 2022-03-07 06:16:08
回答 1查看 245关注 0票数 0

我正在使用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)

EN

回答 1

Stack Overflow用户

发布于 2022-06-07 17:28:20

首先,我不使用机器人框架,但是根据这个https://robocorp.com/docs/languages-and-frameworks/robot-framework/try-except-finally-exception-catching-and-handling,代码应该是相似的。

第二,我不确定这是否是最好的解决办法。我认为你可以用预期的条件类做一些事情,以“更干净的方式”来解决这个问题,但是我对它还不太熟悉,不足以展示/告诉你。相反,我所做的是这样的.

代码语言:javascript
复制
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中缓存元素,但服务本身似乎不希望您这样做,至少在我的经验中是这样的。每次获得一个新的元素似乎确保了一个“缓慢但稳定”的测试。希望有一天有人能告诉我深藏的秘密。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71377077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档