如何使用Selenium Python选择含input标签的下拉框值
解决Selenium定位MUI Autocomplete下拉框选项的问题
这类下拉框是Material UI的Autocomplete组件,并非原生<select>标签,点击后会在页面生成临时的选项列表(通常挂载在<body>下的独立<div>中),你的现有代码仅触发了下拉框展开,未定位到实际选项元素,因此无法完成选中操作。
以下是两种可行解决方案:
方案一:直接定位选项元素点击
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 1. 定位输入框并点击展开选项列表 input_element = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.ID, "asset-instrument-sub-type")) ) input_element.click() # 2. 等待选项加载完成,定位"Equity"选项并点击 equity_option = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'MuiAutocomplete-option') and text()='Equity']")) ) equity_option.click()
方案二:输入文本后回车确认
部分Autocomplete组件支持输入匹配文本后回车确认,这种方式更简洁:
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys input_element = WebDriverWait(self.driver, 10).until( EC.element_to_be_clickable((By.ID, "asset-instrument-sub-type")) ) input_element.click() input_element.send_keys("Equity") input_element.send_keys(Keys.ENTER)
注意事项
- 选项的class可能因项目样式定制有所变动,可通过浏览器开发者工具(F12)查看展开后选项的实际class属性,替换代码中的
MuiAutocomplete-option - 若文本匹配定位失效,可检查选项元素的
data-value等属性,调整XPath为//div[contains(@class, 'MuiAutocomplete-option') and @data-value='Equity']
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

