(WebDriver解决报错:stale element reference: element is not attached to the page document)
场景
有甲乙两个弹窗页面,甲页面上有并排的若干个元素,点击后可打开乙页面展示详情。计划使用循环依次点击甲页面上的元素,验证是否所有元素都可以打开乙页面。
循环逻辑:点击甲页面的第一个元素,弹窗打开乙页面,然后关闭乙页面,再次点击甲页面的第二个元素,出现报错。
错误分析
1、初始定位是元素定位失败,验证后发现,代码中的定位方式正确,但是,实际执行中确实找不到元素;
2、猜测关闭乙页面后,webdriver并不知道当前处于哪个页面上,所以,再次循环定位第二个元素会找不到。所以尝试在每次循环开始时,先获取当前页面句柄,然后再做具体的操作,问题解决。
添加了获取当前句柄的 代码
:
// 获取所有的页面句柄
handles = driver.window_handles
// 切换至当前页面
driver.switch_to.window(handles[-1])