我有一个非常复杂的py.test
脚本,该脚本使用硒来测试非公开网页。在该测试脚本中,我具有以下代码:
wait = WebDriverWait(driver, 1)
result = wait.until(EC.element_to_be_clickable(('xpath', "//span[contains(text(), 'Start simulation')]/..")))
根据documentation(或here),我希望这段代码“等待”最多1秒。但是,它在那里停留了大约256秒!
那是为什么?怎么会这样?
版本信息:
- pytest==3.6.1
- selenium==3.14.1
答案 0 :(得分:3)
请检查代码中是否有隐式等待。最好不要混合implicit和explicit等待。一个已知的问题是,如果您在其他地方进行隐式等待,则可能会影响显式等待时间。
https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2948
答案 1 :(得分:1)
WebDriverWait
仅在页面加载后开始等待(浏览器返回document.readyState == 'complete'
)。如果页面加载需要256秒,则WebDriverWait
甚至还没有开始。
答案 2 :(得分:0)
只需检查是否尝试代替此方法即可。
wait = WebDriverWait(driver, 1)
result = wait.until(EC.element_to_be_clickable(('xpath', "//span[contains(text(), 'Start simulation')]/..")))
尝试此操作可以有所作为。
wait = WebDriverWait(driver, 1)
result = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(), 'Start simulation')]/..")))