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
相关产品推荐
相关产品推荐

