gpt4 book ai didi

python - 使用 Selenium 从下拉列表中选择后如何从表中获取更新的数据?

转载 作者:行者123 更新时间:2023-11-28 17:28:51 25 4
gpt4 key购买 nike

我试图从一个 html 表中获取数据,该表似乎是根据下拉列表的值(使用默认值)将数据加载到表中。但是,当我在下拉列表中执行 selenium click() 时,表值会发生变化,但我获得的数据仍然来自旧页面。我如何获取更新的值?这是我试过的代码。

注意:例如,我正在尝试的 URL 是 this one

from selenium import webdriver

browser = webdriver.Firefox()
browser.get(url) # you can use the url linked above for example

if browser.find_element_by_xpath(
'//a[@id = "user-header-oddsformat-expander"]/span').text != 'IN Odds':
# choose a type of odd that you want from the top dropdown menu
browser.find_element_by_xpath(
'//a[@id = "user-header-oddsformat-expander"]').click()
browser.find_element_by_xpath(
'//ul[@id = "user-header-oddsformat"]/li/a/span[contains(text(), "IN Odds")]').click()

browser.implicitly_wait(10)
table = browser.find_elements_by_css_selector('div#odds-data-table')

for elem in table:
print elem.text

在这里,即使在 dong find_elements...() 之前执行了 click() 之后,我仍然从最初加载的表中获取数据,而不是从新表中获取数据。我该怎么做?

最佳答案

使用 text_to_be_present_in_element() 等待“In Odds”成为下拉值:

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


url = "http://www.oddsportal.com/soccer/england/premier-league/aston-villa-chelsea-Ea6xur9j/?r=1#over-under;2"
browser = webdriver.Firefox()
browser.implicitly_wait(10)
wait = WebDriverWait(browser, 10)

browser.get(url)

if browser.find_element_by_xpath(
'//a[@id = "user-header-oddsformat-expander"]/span').text != 'IN Odds':
# choose a type of odd that you want from the top dropdown menu
browser.find_element_by_xpath(
'//a[@id = "user-header-oddsformat-expander"]').click()
browser.find_element_by_xpath(
'//ul[@id = "user-header-oddsformat"]/li/a/span[contains(text(), "IN Odds")]').click()

wait.until(EC.text_to_be_present_in_element((By.XPATH, '//a[@id = "user-header-oddsformat-expander"]/span'), "IN Odds"))


table = browser.find_elements_by_css_selector('div#odds-data-table')
for elem in table:
print(elem.text)

关于python - 使用 Selenium 从下拉列表中选择后如何从表中获取更新的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205979/

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