python - 使用 Selenium Python 未选择下拉选项
问题描述
我正在尝试在 Python 中使用 Selenium webdriver 在表单中选择一个下拉选项。XPATH 是正确的,我还验证了它会转到正确的下拉选项,但最终它没有选择它。
我已经为另一个有下拉菜单的网站尝试了类似的代码。但它不适用于这个特定的网站。
有人可以帮忙吗?
from selenium import webdriver
driver = webdriver.Chrome("C:\\Users\\xxx\\Downloads\\chromedriver_win32\\chromedriver.exe")
driver.get("https://www.cersai.org.in/CERSAI/dbtrsrch.prg")
elem = driver.find_element_by_xpath("//select[@id='borrowerType']")
all_options = elem.find_elements_by_tag_name("option")
for option in all_options:
if option.get_attribute("value") == "IND":
option.click()
break
解决方案
您应该在访问下拉元素之前添加等待以使其加载。
此外,这是一个Select
元素,您可以按以下特殊方式处理它:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome("C:\\Users\\xxx\\Downloads\\chromedriver_win32\\chromedriver.exe")
wait = WebDriverWait(driver, 20)
driver.get("https://www.cersai.org.in/CERSAI/dbtrsrch.prg")
wait.until(EC.visibility_of_element_located((By.XPATH, "//select[@id='borrowerType']")))
select = Select(driver.find_element_by_xpath("//select[@id='borrowerType']"))
# select by visible text
select.select_by_value('IND')
推荐阅读
- r - 条件面板与闪亮的反应性相结合
- javascript - vuejs 模板中的引号
- php - Laravel 对数据库中的数据进行排序
- javascript - 插入记录 Sqlite3 数据库值的日期(?,?,?,“日期()”)?
- php - Woocommerce如何从function.php获取自定义字段值
- angular - 默认选中复选框需要在角度 6 中取消选中
- forms - 访问连续表单的表单重复值
- php - 查找最低 PHP 数组值(特定)并返回最低键
- javascript - 无法在angularjs中使用动态表头对表进行排序?
- acumatica - 我想对我的自定义屏幕设置进行验证