为了账号安全,请及时绑定邮箱和手机立即绑定

Python Selenium:等待不是等待

Python Selenium:等待不是等待

慕妹3146593 2023-03-08 17:22:52
我正在设计一个网络抓取工具。在某些时候,我需要它等待大约 10 秒,然后再跳转到下一个操作以解决互联网连接问题。我想要一个简单的隐式等待。driver.get('MY WEBSITE')driver.implicitly_wait(10)menu = driver.find_element_by_link_text("Export")menu2 = driver.find_element_by_xpath('//td[text()="Data"]')actions = ActionChains(driver)actions.move_to_element(menu)actions.click(menu)actions.move_to_element(menu2)actions.click(menu2)actions.perform() 唯一的问题是:它没有等待。我什至尝试将 20 秒或更多秒作为 implicitly_wait 参数,以便完全确定并且没有变化。就是打开网站直接去搜索这两个元素。谁能解释一下?
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

文档

隐式等待告诉 WebDriver 在尝试查找任何不立即可用的元素时轮询 DOM 一段时间。默认设置为 0。设置后,隐式等待设置为 WebDriver 对象的生命周期。

因此,如果该元素立即可用,它就不会等待。


查看完整回答
反对 回复 2023-03-08
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

尝试使用WebDriverWait:


E.g


from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Firefox()

driver.get("http://somedomain/url_that_delays_loading")

try:

    element = WebDriverWait(driver, 10).until(

        EC.presence_of_element_located((By.ID, "myDynamicElement"))

    )

finally:

    driver.quit()


查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信