用Python中的Selenium单击引导程序下拉项



我正试图用selenium从引导程序下拉列表中选择一个项目。我可以单击下拉列表本身并显示选项,但我不能单击任何选项。

我尝试了不同的东西,但我得到了:

类型错误:"str"对象不可调用

这是我需要修复的行:

option = driver.find_element(By.XPATH("//li[text()='Element'"))
option.click()

我也尝试使用这个代码,但出现了相同的错误:

options = driver.find_elements(By.XPATH("//ul[contains(@class,'a-list')]/a"))
for option in options:
optionText = option.text()
if optionText == ('Element'):
option.click()
break

我还尝试将这些代码与不同的xpath一起使用,以防出现错误,但总是出现相同的错误。

如果有任何帮助,我将不胜感激。提前感谢!

只需点击两次即可打开https://www.jquery-az.com/bootstrap4/demo.php?ex=79.0_1页面上的CSS选项:

  1. 单击下拉按钮
  2. 单击所需的选项
    当然,在执行单击之前,您需要等待这些元素的可单击性,但这可以在WebDriverWait预期条件下实现
    以下代码有效:
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:webdriverschromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)
url = "https://www.jquery-az.com/bootstrap4/demo.php?ex=79.0_1"
driver.get(url)
wait = WebDriverWait(driver, 20)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href*='css']"))).click()

您的代码有几个不同的拼写错误:

  • find_element()应该有两个参数(而不是一个(,第一个是选择器类型,如By.XPATH,它转换为"xpath"。第二个参数应该是该类型的选择器
  • By.XPATH是一个字符串,而不是一个方法(您使用它就像使用mathod一样(
  • 您的第一个选择器缺少一个右括号]

试试这个,它可以解决你的问题:

option = driver.find_element(By.XPATH, "//li[text()='Element']")
option.click()

最新更新