在使用显示等待时,遇到StaleElementReferenceException: Message: stale element reference: element is not attached to the page document.的问题
字面上的意思是,引用的元素已过时。原因是页面刷新了,此时当然找不到之前页面的元素,就算是后退回来的页面也是不一样的
解决方法:加判断,失败则重新获取元素
原先的点击操作封装为:
def click(self, name, value):
element = WebDriverWait(self.driver, 10).until(ECS.element_to_be_clickable((name, value)))
element.click()
修改为:
def click(self, name, value):
attempts = 0
while attempts < 2:
try:
element = WebDriverWait(self.driver, 10).until(ECS.element_to_be_clickable((name, value)))
element.click()
break
except:
attempts += 1
参考:Selenium防踩坑 - StaleElementReferenceException 解决方案 - 掘金 (juejin.cn)