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

Python Selenium无法点击选项容器内的弹窗选择项问题求解

问题原因
  • 你使用的全局XPath/CSS选择器会匹配到两位出行人对应的两个弹窗(其中一个处于隐藏状态),直接按下标取元素大概率会选中隐藏弹窗内的不可点击元素,因此操作失效
  • 未加等待逻辑,可能元素还没完全渲染完成就执行点击操作,导致跳过或者报错
  • 部分场景下选择完选项后需要点击弹窗底部的确认按钮才会生效,原有代码没有执行确认操作
解决方法

首先导入需要的工具类:

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

完整操作代码如下:

# 初始化等待器,最长等待10秒
wait = WebDriverWait(driver, 10)

# 第一步:先定位当前可见的弹窗容器,避免匹配到隐藏的另一个弹窗
active_popup = wait.until(EC.visibility_of_element_located(
    (By.CSS_SELECTOR, ".f_input-optionsWrapper.js_optionsWrapper")
))

# 第二步:在当前弹窗范围内查找性别选项,不会匹配到其他弹窗的元素
# 要选女士的话把[data-testid='Pan']替换为[data-testid='Paní']即可
target_option = active_popup.find_element(By.CSS_SELECTOR, "[data-testid='Pan']")

# 点击选项,原生点击失效时自动降级为JS点击
try:
    target_option.click()
except:
    driver.execute_script("arguments[0].click();", target_option)

# 第三步:点击弹窗底部的确认按钮,提交选择
confirm_btn = active_popup.find_element(By.CSS_SELECTOR, ".f_button.f_button--common")
try:
    confirm_btn.click()
except:
    driver.execute_script("arguments[0].click();", confirm_btn)

如果需要给第二位出行人选择,等第一个弹窗关闭后触发第二个弹窗弹出,再执行一遍上述代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:09:02