如何加载页面直到找到特定元素 selenium python
How to load page until specific element found selenium python
有没有办法在网页中的特定元素加载时设置超时
注意:我说的是使用driver.get()
方法加载网页
例如,我尝试将页面加载超时设置为 10 秒,并检查元素是否存在,但如果不存在,我将不得不从头加载它。
编辑:
明确表示不想加载满url
我希望 driver.get()
加载 url 直到找到元素,然后停止从 url
加载更多
在您的示例中,您只使用了 driver.get()
方法,该方法将加载完整 url 然后执行下一个命令。一种方法是使用 driver.set_page_load_timeout()
编辑:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
op = Options()
op.page_load_strategy = 'none'
driver = webdriver.Chrome(options=op)
driver.get(URL)
WebDriverWait(driver, 10).until(
EC.presence_of_element_located(
(By.XPATH, '//div')))
driver.execute_script("window.stop();")
PS。如果您 post 没有一行代码的模糊问题,您将不断得到 off-topic 个答案。
webdriver
默认情况下将等待页面加载。它不会等待 frames
内的加载或 ajax
请求。这意味着当您使用 .get('url')
时,您的 browser
将 wait
直到页面完全加载,然后转到代码中的下一个命令。但是,当您发布 ajax
请求时,webdriver
不会等待,您有责任 wait
为页面或页面的一部分加载适当的时间;所以有一个名为 expected_conditions.
的模块
当找不到元素时会出现错误,因此您可以使用“尝试”直到找到元素:
while True:
try:
element = driver.find_element(by=By.<Your Choice>, value=<Name or Xpath or ...>)
except:
time.sleep(1)
它会尝试直到找到元素
有没有办法在网页中的特定元素加载时设置超时
注意:我说的是使用driver.get()
方法加载网页
例如,我尝试将页面加载超时设置为 10 秒,并检查元素是否存在,但如果不存在,我将不得不从头加载它。
编辑:
明确表示不想加载满url
我希望 driver.get()
加载 url 直到找到元素,然后停止从 url
在您的示例中,您只使用了 driver.get()
方法,该方法将加载完整 url 然后执行下一个命令。一种方法是使用 driver.set_page_load_timeout()
编辑:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
op = Options()
op.page_load_strategy = 'none'
driver = webdriver.Chrome(options=op)
driver.get(URL)
WebDriverWait(driver, 10).until(
EC.presence_of_element_located(
(By.XPATH, '//div')))
driver.execute_script("window.stop();")
PS。如果您 post 没有一行代码的模糊问题,您将不断得到 off-topic 个答案。
webdriver
默认情况下将等待页面加载。它不会等待 frames
内的加载或 ajax
请求。这意味着当您使用 .get('url')
时,您的 browser
将 wait
直到页面完全加载,然后转到代码中的下一个命令。但是,当您发布 ajax
请求时,webdriver
不会等待,您有责任 wait
为页面或页面的一部分加载适当的时间;所以有一个名为 expected_conditions.
当找不到元素时会出现错误,因此您可以使用“尝试”直到找到元素:
while True:
try:
element = driver.find_element(by=By.<Your Choice>, value=<Name or Xpath or ...>)
except:
time.sleep(1)
它会尝试直到找到元素