Kid*_*ddo 10 python selenium selenium-webdriver
我只是想知道,在点击链接之前如何让浏览器等待?我的目标是从动态网页上抓取内容,内容是动态的,但我设法得到表单ID.唯一的问题是提交按钮仅在2-3秒后显示.但是,我的Firefox驱动程序在加载页面时立即开始单击链接(而不是动态部分).
有什么方法可以让我的浏览器等待2-3秒,直到出现提交按钮?我尝试使用time.sleep()
但暂停一切,提交按钮不会出现,time.sleep
但在time.sleep
结束后2-3秒后出现.
Hel*_*nds 15
您可以设置等待如下:
明确的等待:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.ID, "myElement"))
Run Code Online (Sandbox Code Playgroud)
隐含等待:
driver.implicitly_wait(20) # seconds
driver.get("Your-URL")
myElement = driver.find_element_by_id("myElement")
Run Code Online (Sandbox Code Playgroud)
您可以使用上述任何一种.两者都有效.
你需要使用Selenium Waits
.
特别是,element_to_be_clickable
预期的条件更适合其他条件:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "myDynamicElement"))
)
element.click()
Run Code Online (Sandbox Code Playgroud)
driver
你的webdriver实例在哪里,10是等待元素的秒数.通过这种设置,selenium将尝试每500毫秒定位一个元素,总共10秒.TimeoutException
如果找不到元素,它将在10秒后抛出.