gpt4 book ai didi

python - WebDriverWait 通过 CSS 选择器查找元素

转载 作者:行者123 更新时间:2023-12-03 20:29:17 27 4
gpt4 key购买 nike

我想使用 Python 3 检索此网页的航类价格:https://www.google.es/flights?lite=0#flt=/m/0h3tv./m/04jpl.2018-12-17;c:EUR;e:1;a:FR;sd:1;t:f;tt:o

起初我遇到了一个错误,几个小时后我意识到这是因为我没有给 webdriver 足够的时间来加载所有元素。所以为了确保它有足够的时间,我添加了一个 time.sleep 像这样:

time.sleep(1)

这使它起作用!但是,我已阅读并被建议不要使用此解决方案,而是使用 WebDriverWait。因此,经过几个小时和几个教程后,我一直试图查明 WebDriverWait 应该等待的确切 CSS 类。

我认为最接近的是:
WebDriverWait(d, 1).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".flt-subhead1.gws-flights-results__price.gws-flights-results__cheapest-price")))

关于我缺少什么的任何想法?

最佳答案

您可以使用 css 属性 = 值选择器来定位,或者如果该值是动态的,您可以使用 css 选择器组合来进行位置匹配。

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.Chrome()
driver.get("https://www.google.es/flights?lite=0#flt=/m/0h3tv./m/04jpl.2018-12-17;c:EUR;e:1;a:FR;sd:1;t:f;tt:o")

#element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR , '[jstcache="9322"]')))
element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR , '.flt-subhead1.gws-flights-results__price.gws-flights-results__cheapest-price span + jsl')))
print(element.text)
#driver.quit()

没有结果的情况:
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
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()
url ="https://www.google.es/flights?lite=0#flt=/m/0h3tv./m/04jpl.2018-12-17;c:EUR;e:1;a:FR;sd:1;t:f;tt:o" #"https://www.google.es/flights?lite=0#flt=/m/0h3tv./m/04jpl.2018-11-28;c:EUR;e:1;a:FR;sd:1;t:f;tt:o"
driver.get(url)

try:
status = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR , 'p[role=status')))
print(status.text)
except TimeoutException as e:
element = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR , '.flt-subhead1.gws-flights-results__price.gws-flights-results__cheapest-price span + jsl')))
print(element.text)
#driver.quit()

关于python - WebDriverWait 通过 CSS 选择器查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com