實際上,我正在從https://demo.seleniumeasy.com/jquery-dropdown-search-demo.html執行任務。但我發現了一個問題——我無法使用 XPATH 在此頁面上找到任何元素。例如,我想使用driver.find_elementXPATH 找到“選擇國家”:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://demo.seleniumeasy.com/input-form-demo.html")
jquery_drop_list = driver.find_element(by=By.XPATH, value="//span[@class='select2-selection select2-selection--single']")
#jquery_drop_list = driver.find_element(by=By.XPATH, value="//span[@class='select2 select2-#container select2-container--default select2-container--above select2-container--focus']")
#jquery_drop_list = driver.find_element(by=By.XPATH, value="//span[@class='select2-hidden-#accessible']")
print(jquery_drop_list)
但上述搜索均無效。
你能告訴我一個合適的選擇器應該是什么樣的類似問題嗎?也許 XPATH 選擇器在這里不是一個好的選擇?
uj5u.com熱心網友回復:
這里有一個選擇塊。
您需要為此使用 SeleniumSelect物件。此代碼選擇丹麥:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
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(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)
url = "https://demo.seleniumeasy.com/jquery-dropdown-search-demo.html"
driver.get(url)
select_country = Select(wait.until(EC.element_to_be_clickable((By.ID, 'country'))))
select_country.select_by_value("Denmark")
但是,如果您仍想通過常規點擊打開該下拉選單,也可以。這個 XPath 有效:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
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(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)
url = "https://demo.seleniumeasy.com/jquery-dropdown-search-demo.html"
driver.get(url)
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[@aria-labelledby='select2-country-container']"))).click()
通常,XPath 是使用 selenium 選擇 Web 元素的最強大的方法。
有些人只是不熟悉它 :)
有時某些 Web 驅動程式不正確支持某些 XPath,但如果您正在使用Chromedriver,您會發現 XPath 沒有問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/531042.html
