选择下拉列表中的一个元素 -selenium -python

问题描述 投票:0回答:2

我尝试在运动下拉列表中选择“足球”运动,但无法单击它。

我尝试使用 Select() 方法:

    driver = webdriver.Chrome()
    url = "https://www.flashscore.com/"
    driver.get(url)
                        
    Team = 'Paris SG'
    Type = 'Teams'
    sport = 'Football'
                
buttonSearch = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".header__button--search"))).click()
fill_search_bar = driver.find_element(By.CSS_SELECTOR, ".input___1NGxU3-")
fill_search_bar.clear()
fill_search_bar.send_keys(Team)
driver.find_element(By.CSS_SELECTOR, ".dropDown").click()
select_sport = Select(driver.find_element(By.XPATH,"//div[contains(@class, 'dropDown__list')]"))
select_sport.select_by_visible_text(sport)
    

此代码返回此错误:

UnexpectedTagNameException: Message: Select only works on <select> elements, not on <div>

这是我的第二个版本:

fill_search_bar = driver.find_element(By.CSS_SELECTOR, ".input___1NGxU3-")
fill_search_bar.clear()
fill_search_bar.send_keys(Team)
driver.find_element(By.CSS_SELECTOR, ".dropDown").click()
select_sport = WebDriverWait(driver, timeout=10).until(EC.element_to_be_clickable((By.XPATH,"//[@class='dropDown__list']/[contains(text(),'"+ sport +"')]"))).click()

此代码返回此错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='dropDown__list']/div[contains(text(),'Football')]"}

我该如何解决这个问题?

python selenium
2个回答
0
投票

为了简单起见,我建议将

wait until
类分解为两行。它完全是可选的,不会产生太大的影响。

wait = WebDriverWait(driver, 300)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".header__button--search")))
element_to_be_clicked=driver.find_element_by_css_selector(".header__button--search")
element_to_be_clicked.click()

对于第二部分,尝试使用下拉列表中的选项值:

fill_search_bar.clear()
fill_search_bar.send_keys(Team)
driver.find_element_by_xpath("//div[@class='dropDown__selectedValue dropDownValueSelected___3msxRQS']").click()
select_sport=Select(driver.find_element_by_class("dropDown__list dropDownList___3V-ppVu"))
select_sport.select_by_value('1')  #football has value 1 in the list

0
投票

这里也有同样的问题。我正在尝试单击下拉菜单的搜索表单选项。我不知道如何单击元素,因为单击后它们只会出现在 DOM 中。此外,单击后放置 div(单击的选项)的容器列表将无法显示(当尝试单击它时,它会关闭下拉菜单并从 DOM 中消失)。 :(

© www.soinside.com 2019 - 2024. All rights reserved.