为什么Selenium-Python WebDriverWait无法按记录工作?

时间:2019-02-22 10:08:44

标签: python selenium

我有一个非常复杂的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

3 个答案:

答案 0 :(得分:3)

请检查代码中是否有隐式等待。最好不要混合implicitexplicit等待。一个已知的问题是,如果您在其他地方进行隐式等待,则可能会影响显式等待时间。

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')]/..")))