[英]How to interact with a non-select dropdown with selenium python
我目前正在學習selenium與python的使用,並嘗試收集一些數據。 在過去的幾天里,我一直在努力點擊 Select 方法無法訪問的下拉菜單。 我看了很多關於 SOF、博客、教程的問題……但找不到我的問題的答案。
此網站可訪問下拉列表 <"https://en.volleyballworld.com/volleyball/competitions/olympics-2020/schedule/11349/">,然后單擊“Box Score”選項卡。 在球隊旗幟下方,您會看到寫有“ALL SETS”的下拉菜單。
我想從“SET 1”、“SET 2”、“SET 3”訪問數據。 我的猜測是點擊下拉菜單,然后點擊“SET 1”等等。 但是我無法使代碼工作以單擊下拉列表。
下面是我的代碼:
PATH = "C:\Program Files\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://en.volleyballworld.com/volleyball/competitions/olympics-2020/schedule/11349/")
#implicit wait to be sure the elements we want are loaded when we try accessing them
driver.implicitly_wait(5)
actions = ActionChains(driver)
#clicking on button
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CLASS_NAME, "tab-title_boxscore")))
element.click() #mimic clicking on the clickable element
dropdown = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
(By.LINK_TEXT, "ALL SETS"))).click()
first_set = WebDriverWait(driver, 10).until(EC.element_to_be_clickable(
(By.LINK_TEXT, "SET 1"))).click()
非常感謝您的時間和回答!
要click()以文本為ALL SETS的元素,然后單擊以文本為SET 1而不是 present_of_element_located( )的元素,您需要為element_to_be_clickable()誘導WebDriverWait ,您可以使用以下定位器策略:
代碼塊:
driver.get("https://en.volleyballworld.com/volleyball/competitions/olympics-2020/schedule/11349/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button#onetrust-accept-btn-handler"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.tab-title_boxscore"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.tab-title_all"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='All Sets']//following::li[1]/a/span"))).click()
瀏覽器快照:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.