You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium从下拉列表/地址列表中选择元素?

如何用Selenium从地址下拉列表中选择元素

针对你的需求,要选择'Surrey, BC, Canada'这个地址选项,原代码存在几个问题:

  • 错误调用了标准库的select.select(),没有关联到页面元素
  • 地址下拉框大概率不是原生<select>标签(这类自定义下拉在网页中很常见),因此Selenium的Select类并不适用

以下是修正后的完整代码,改用显式等待定位并点击目标选项:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

s=Service("C:\Drivers\chromedriver_win32\chromedriver.exe")
driver = webdriver.Chrome(service=s)

driver.maximize_window()
driver.get("https://app.mondofi.co/")

# 登录操作
driver.find_element("xpath", '//*[@id="root"]/div/div/form/div[1]/div/input').send_keys("stage_mondofi")
driver.find_element("xpath", '//*[@id="root"]/div/div/form/div[2]/div/div/input').send_keys("Z3Pytzsh56eQSZmH")
driver.find_element("xpath", '//*[@id="root"]/div/div/form/div[3]/button').click()

# 等待页面跳转后点击对应菜单
WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//*[@id="root"]/div/div[3]/div[1]/div/div[2]/div/div[2]/ul/li[3]/a'))
).click()

# 填写表单信息
driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[2]/div/div/input').send_keys("Ash")
driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[3]/div/div/input').send_keys("Ish")
driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[4]/div/div/input').send_keys("ash@yopmail.com")
driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[5]/div/div/input').send_keys(9418035364)
driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[6]/div/div/input').send_keys("Lake View")
driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[7]/div/div[1]/input').send_keys("Lake")

# 输入地址关键词并等待下拉选项出现
address_input = driver.find_element("xpath", '//*[@id="root"]/div/div[2]/div/div/div[2]/div/div/form/div/div[9]/div/div/div[1]/input')
address_input.send_keys("Surrey")

# 等待目标地址选项可点击并点击
target_address = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, "//div[contains(text(), 'Surrey, BC, Canada')]"))
)
target_address.click()

关键说明:

  • 替换了不可靠的time.sleep,改用WebDriverWait显式等待,确保元素加载完成后再操作,大幅提升代码稳定性
  • 针对自定义下拉列表,直接定位包含目标文本的元素并点击,这是处理非原生select下拉的通用方法
  • 移除了无用的select库导入,因为此处不需要原生select的操作逻辑

内容的提问来源于stack exchange,提问作者Ashish Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:45:36