是的我知道问题经常被问到,但我仍然没有得到。无论如何,我想让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它似乎不是一个问题...
答案 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();
}