我尝试在运动下拉列表中选择“足球”运动,但无法单击它。
我尝试使用 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')]"}
。
我该如何解决这个问题?
为了简单起见,我建议将
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
这里也有同样的问题。我正在尝试单击下拉菜单的搜索表单选项。我不知道如何单击元素,因为单击后它们只会出现在 DOM 中。此外,单击后放置 div(单击的选项)的容器列表将无法显示(当尝试单击它时,它会关闭下拉菜单并从 DOM 中消失)。 :(