让Selenium等待10秒钟

时间:2017-07-27 10:09:14

标签: python selenium

是的我知道问题经常被问到,但我仍然没有得到。无论如何,我想让Selenium等待。我试过这些方法

driver.set_page_load_timeout(30)
driver.implicitly_wait(90)
WebDriverWait(driver, 10)
driver.set_script_timeout(30)

和其他东西,但它不起作用。我需要硒等待10秒钟。 直到某个元素被加载或等等,只需等待10秒。我知道有这个

try:
   element_present = EC.presence_of_element_located((By.ID, 'whatever'))
   WebDriverWait(driver, timeout).until(element_present)
except TimeoutException:
    print "Timed out waiting for page to load"

我不希望

如果等待一段时间对于硒来说是多少(不可实现),那么其他(python)库/程序能够完成这项任务呢?使用Javas Selenium它似乎不是一个问题...

1 个答案:

答案 0 :(得分:30)

您提到的所有API基本上都是超时,所以它会等到某个事件发生或达到最大时间。

set_page_load_timeout - 设置在抛出错误之前等待页面加载完成的时间。如果超时为负,则页面加载可能是无限期的。

implicitly_wait - 指定驱动程序在搜索元素时应等待的时间(如果元素不立即存在)。

set_script_timeout - 设置在抛出错误之前等待异步脚本完成执行的时间。如果超时为负,则允许脚本无限期运行。

有关更多信息,请访问以下页面。 (文档适用于JAVA绑定,但所有绑定的功能应相同) https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.Timeouts.html#implicitlyWait-long-java.util.concurrent.TimeUnit-

所以,如果你想等待selenium(或任何脚本)10秒,或任何时间。那么最好的办法是让那个线程进入睡眠状态。

python 中,它将是

import time 
time.sleep(10)

在JAVA中它将是

执行此操作的简单方法是使用

    try {
        Thread.sleep(10*1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }