StaleElementReferenceException解决
问题:
我在对 CRMEB商城app登录功能进行自动化测试,从我的页面点击“请点击登录”这几个字时,日志爆出了如下异常:
Encountered internal error running command: io.appium.uiautomator2.common.exceptions.StaleElementReferenceException: The element 'By.xpath: //*[@text='请点击登录']' does not exist in DOM anymore
也有可能报出如下错误:
Encountered internal error running command: NoSuchElementError: An element could not be located on the page using the given search parameters.
分析:
在点击“请点击登录”这几个字的方法最后加入打印语句,然后再次运行,发现有弹出框,控制台却没有对应的打印语句出来,推测手工测试登录功能时,点击我的界面后,需要点击“请点击登录”这几个字才能出现弹窗(是否要登录),而自动化测试时App可能自动触发了登录状态检查,弹窗直接弹出,原来的“请点击登录”文字所在位置的UI被遮盖,脚本接着尝试点击它自然会失败,抛出 StaleElementReferenceException
解决:
在点击我的页面方法前加入强制等待time.sleep(2) 让可能的弹窗有充足时间弹出来,同时代码去掉操作点击“请点击登录”这几个字的方法,直接往下面走。

浙公网安备 33010602011771号