使用Python的Selenium(选择选项)
我正在用Python测试Selenium,想从一个下拉菜单中选择一个选项。
这次我在测试一个网站,地址是https://www.motogp.com/es/gp-results/2024/qat/motogp/rac/classification,我需要把比赛选项换成其他的,比如说“spr”,因为直接在网页上更改后会自动跳回“rac”。
我试过:
select_element = driver.find_element(By.CLASS_NAME, "primary-filter__filter-select--cat")
select = Select(select_element)
但是,我无法选择这个选项。我想正确获取网址。
1 个回答
1
问题出在这段代码上:By.CLASS_NAME, "primary-filter__filter-select--cat"
。它无法找到任何网页元素。
解决办法:使用下面的XPath定位方法
By.XPATH, "(//select[@class='primary-filter__filter-select primary-filter__filter-select--cat'])[2]"
XPath表达式解释:
(//select[@class='primary-filter__filter-select primary-filter__filter-select--cat'])[2]
-- 这个表达式用来找到HTML文档中第二个带有指定类名primary-filter__filter-select primary-filter__filter-select--cat
的下拉列表元素(<select>
)
这里是完整的可运行代码:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome()
driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get("https://www.motogp.com/es/gp-results/2024/qat/motogp/rac/classification")
# Click on Rechazar button
wait.until(EC.element_to_be_clickable((By.ID, "onetrust-reject-all-handler"))).click()
select_element = wait.until(EC.element_to_be_clickable((By.XPATH, "(//select[@class='primary-filter__filter-select primary-filter__filter-select--cat'])[2]")))
select = Select(select_element)
select.select_by_visible_text("SPR")
time.sleep(20)
结果: