Python Selenium无法选择Wunderground下拉框城市选项求助
解决Wunderground网站下拉列表选择城市的问题
你的代码存在几个关键问题,导致无法选中目标城市:
- 缺失
time模块导入,运行时会直接报错 - 使用固定索引的XPath定位下拉选项,元素位置可能随页面加载变化,稳定性极差
- 未等待下拉列表加载完成就直接定位元素,极易触发元素未找到的异常
修正后的代码
from selenium.webdriver.support import expected_conditions as EC from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import time # 补充缺失的模块 driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get("https://www.wunderground.com/") driver.maximize_window() time.sleep(2) # 缩短低效的长等待,配合显式等待提升稳定性 # 定位搜索框并输入关键词 search_city = driver.find_element(By.ID, "wuSearch") search_city.send_keys('new york') # 显式等待下拉选项加载完成,精准定位目标城市 wait = WebDriverWait(driver, 10) target_option = wait.until(EC.element_to_be_clickable((By.XPATH, '//search-autocomplete//li[contains(text(), "New York City, NY")]'))) target_option.click()
核心改进点
- 补充
import time语句,解决运行报错问题 - 替换固定索引定位为文本匹配定位,通过
contains(text(), "New York City, NY")精准锁定目标选项,不受列表元素顺序影响 - 使用
WebDriverWait显式等待元素可点击,替代固定时长的time.sleep(10),既保证元素加载完成,又提升代码执行效率 - 移除当前场景未用到的模块导入(如
Select、ActionChains),精简代码
内容的提问来源于stack exchange,提问作者san1
相关产品推荐
相关产品推荐

