Selenium selenium 提示 stale element reference: element is not attached to the page document

冯莹 · 2020年07月22日 · 最后由 fiskeryang 回复于 2020年08月15日 · 1974 次阅读

BasePage:
# 窗口切换
def switch_handles(self):
handles = self.driver.window_handles
try:
self.driver.switch_to.window(handles[-1])
logger.info("Switch to window :%s" % self.driver.current_window_handle)
except NameError as e:
logger.error("Failed to switch other window")

Test:
homepage = HomePage(self.driver)
homepage.click_news_link()

newspage = NewsHomePage(self.driver)
newspage.switch_handles()
newspage.click_sports()

报错:selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
求大神解惑,网上有说重新定位元素,但重新定位不就失去了 po 封装的意义啦

共收到 1 条回复 时间 点赞

这种异常在 Selenium 自动化中经常会遇到,解决方案只能是重新定位
定位元素和操作这个元素是有间隔的 。如果操作元素时页面的 dom 树变化了 这个元素也可能会刷新。只能 try catch 重新定位。
不过 就算重新定位 和你说的 PO 设计模式没有任何关系,我想你可能有点想岔了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册