Python Selenium操作网页下拉菜单提示元素不可见如何解决
Selenium 操作方案
前置依赖导入
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 import time
完整实现代码
# 初始化浏览器驱动,这里以Chrome为例,可替换为你使用的浏览器驱动 driver = webdriver.Chrome() # 全局隐式等待设置 driver.implicitly_wait(10) # 打开目标页面 driver.get("https://understat.com/team/Aston_Villa/2021") # 显式等待对象,最长等待10秒 wait = WebDriverWait(driver, 10) # 步骤A:点击自定义下拉框触发按钮 dropdown_trigger = wait.until( EC.element_to_be_clickable((By.CSS_SELECTOR, 'div[name="team-players-n-last-matches"]')) ) dropdown_trigger.click() # 步骤B:选中「5 games」选项 five_games_option = wait.until( EC.element_to_be_clickable((By.XPATH, '//span[text()="5 games"]/parent::div[contains(@class, "item")]')) ) five_games_option.click() # 步骤C:点击过滤按钮提交筛选 filter_btn = wait.until( EC.element_to_be_clickable((By.XPATH, '//button[.//i[contains(@class, "fa-filter")]]')) ) filter_btn.click() # 等待筛选后的数据加载完成 time.sleep(2) # 后续可直接解析页面提取球员数据
注意事项
- 该站点的下拉选择器是自定义前端组件渲染的,原生
select标签被设置为不可见状态,直接操作Select类或者原生select下的option标签都会触发不可交互错误,必须操作自定义的下拉触发元素和选项元素 - 所有操作前添加显式等待,避免页面未渲染完成就执行操作导致的报错
- 如果运行时出现元素定位失败,可以适当调大等待时长,或者根据本地页面渲染结构微调选择器
内容的提问来源于stack exchange,提问作者Adam Norton
相关产品推荐
相关产品推荐

