首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium: driver.implicitly_wait()和time.sleep()之间的不同行为

问Selenium: driver.implicitly_wait()和time.sleep()之间的不同行为
EN

Stack Overflow用户
提问于 2020-07-06 20:05:34
回答 2查看 224关注 0票数 0

我试图在上刮,这是一个带有Selenium的网站(因为它是一个动态加载内容的网站)。

然而,为了等待加载这样的动态内容,虽然我通常使用time.sleep(),我刚刚知道(并尝试过) driver.implicitly_wait(),但似乎没有得到预期的内容。

以下是代码:

代码语言:javascript
复制
from selenium import webdriver
import os
import time

os.environ['MOZ_HEADLESS'] = '1'

baseSite = 'https://bair.berkeley.edu/students.html'
driver = webdriver.Firefox()
#driver.implicitly_wait(5) --> full content is not retrieved
driver.get(baseSite)

time.sleep(5) # full content is retrieved

source = driver.page_source
print(source)
EN

回答 2

Stack Overflow用户

发布于 2020-07-06 21:29:46

隐式等待超时的设置(即使用implicitly_wait()不影响浏览器加载页面的方式)。该方法是在使用find_element或find_elements时轮询DOM中所需的元素。在您发布的代码中,设置隐式等待超时没有任何效果,因为您没有试图在页面上找到任何元素。

如果你要提供更多关于你期望的细节(除了说,“我希望页面被‘完全加载’”,因为这个短语非常模糊以至于毫无意义),提供更多的指导可能会更容易。

票数 1
EN

Stack Overflow用户

发布于 2020-07-07 01:20:48

您可以使用显式等待,这将等待直到满足某一条件。例如,

element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))

将等到WebDriver找到该元素(直到10秒过去,此时它将超时)。这个链接有助于更多地了解Selenium中不同类型的等待。https://selenium-python.readthedocs.io/waits.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62763682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档