好的,这是我试图解释这个问题,我还没有想到自己。我正在使用Selenium和python绑定,并且在使用WebDriverWait
后跟click()
事件时,似乎无法找到随机页面元素的问题。这是我的代码:
yearOption = WebDriverWait(self.br, 40).until(lambda d: d.find_element_by_xpath("//select[@name='ctl00$holdSection$rptCommissionYears']/option[@value='%s']" % year), self.br)
print yearOption.text
yearOption.click()
此命令集处于for循环中,并且在.click()
事件后随机失败,在StaleElementReferenceException()
打印后产生错误:yearOption.text
。这对我来说完全是奇怪的,因为WebDriverWait
行显然找到了元素,并且在点击元素之前我没有重新加载或更改浏览器状态...
为什么我会收到此错误的任何想法?请记住,它并不是一致的,事实上 - 有时候,我的整个脚本将成功执行而没有错误。
答案 0 :(得分:0)
之前我遇到过类似的问题,我99%肯定你的问题是一样的。
如果检查你的循环是:
点击后的Normaly,会发生一些页面重新加载或更改。这可能会影响您要搜索的元素。如果你不小心,你可能最终在重新加载之前寻找元素,当你点击它时,元素ID已经改变,因此给你一个陈旧的例外。
让我们一一去:
您可以通过不同方式解决此问题:
如果这不是您的问题,您可以随时分享更多代码和测试目标,我很乐意为您提供帮助。