簡體   English   中英

selenium python 下拉菜單中的元素 select

[英]selenium python element select from dropdown menu

嘗試通過 python 中的 selenium 從下拉菜單中獲取 select 多個元素。
來自 URL 的網站。但是出現Timeoutexception錯誤。

我試過 GoogleChrome 的檢查菜單。 //label[@for="inputGenre"]/parent::div//select[@placeholder="Choose a Category"]給出了我需要的 select 標簽。 但不幸的是,對於 selenium,我無法在此標簽中找到任何元素。 任何想法為什么會發生錯誤?

代碼如下;

slect_element = Select(WebDriverWait(driver, 10).until(EC.element_located_to_be_selected((By.XPATH, '//label[@for="inputGenre"]/parent::div//select[@placeholder="Choose a Category"]'))))

slect_element.select_by_index(1)
slect_element.select_by_value('23')

奇怪的是,是否可以從下面的代碼中找到它並獲取它的文本值;

drp_menu=driver.find_elements(By.XPATH,'//label[@for="inputGenre"]/parent::div//div[@class="dropdown-main"]/ul/li')
print(len(drp_menu))
ls_categories=[]
for i in drp_menu:
    ls_categories.append(i.get_attribute('innerText'))

print 給出了 15 個元素,get_attribute(innerText) 給出了每個選項元素文本的文本。 無論如何,非常感謝@Prophet

Select 元素是隱藏的,Selenium 無法使用,因為我們將普通的 Select 元素用於 select 下拉菜單項。
在這里,我們需要像打開任何其他元素一樣打開下拉菜單,方法是單擊它們,select 所需的選項,然后單擊“搜索”按鈕。
因此,這些行打開下拉菜單並在下拉菜單中選擇 2 個選項:

wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='form-group'][contains(.,'Category')]//div[@class='dropdown-display-label']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='form-group'][contains(.,'Category')]//li[@data-value='23']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='form-group'][contains(.,'Category')]//li[@data-value='1']"))).click()

到目前為止的結果是:

在此處輸入圖像描述

最后點擊搜索按鈕,結果是:

在此處輸入圖像描述

整個代碼是:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)
wait = WebDriverWait(driver, 20)

url = "https://channelcrawler.com/"

driver.get(url)

wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='form-group'][contains(.,'Category')]//div[@class='dropdown-display-label']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='form-group'][contains(.,'Category')]//li[@data-value='23']"))).click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='form-group'][contains(.,'Category')]//li[@data-value='1']"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM