我正试图用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选项:
- 单击下拉按钮
- 单击所需的选项
当然,在执行单击之前,您需要等待这些元素的可单击性,但这可以在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()