问题场景:
1\ 首页,点击登录按钮, xpath是//div[@id='id']/span .此时span属性是 <span class='gap'>|</span>
2\登录页面,完成登录
3\ 自动返回首页, 获取用户名,xpath 是//div[@id='id']/span. 用户名和登录按钮实际在同一位置,不过登录后,span 为 <span title='用户名'>用户名</span>.可以看出span发生了变化.
断言结果: " | " != "用户名"
同时报错:
The element reference of <span class="gap"> is stale; either the element is no longer attached .....
意思是:<span class=“gap”>的元素引用过时;元素不再附加到DOM,它不在当前框架上下文中,或者文档已刷新
解决方案:
1\ 在页面刷新后,重新定位该元素(本bug无效)
2\在页面刷新后,下一步操作前 sleep3秒 (有效).
即使用WebDriverWait(driver,15).until(EC.visiblity_of_element_located(By.XPATH(By.XPATH,'//div[@id="id"]/span')))进行了等待,还是要在前面加sleep