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

Selenium Python:如何点击SVG元素关闭弹窗遮罩

点击SVG叉号关闭欢迎弹窗失败的解决方法

已完成登录和授权操作,但始终无法定位并点击欢迎弹窗遮罩上的SVG叉号来关闭弹窗。

尝试过的代码:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, "jss109"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//svg[@class='jss109']"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'svg[aria-hidden="True"]')).click()
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, "JSS109"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@class='jss109']/*[name()='svg']")))

报错信息:

TimeoutException: Message:

相关HTML结构截图:

SVG叉号元素的HTML结构1
SVG叉号元素的HTML结构2


可行的解决方向:

  • 检查iframe嵌套:如果SVG元素位于iframe内,需先切换到对应iframe再定位:
    iframe = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.TAG_NAME, "iframe")))
    driver.switch_to.frame(iframe)
    # 之后执行点击操作
    driver.switch_to.default_content()  # 操作完成后切回主文档
    
  • 修正定位表达式:
    • 注意属性大小写:CSS选择器里aria-hidden="true"是小写,原代码写的True会导致匹配失败,改为:
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, 'svg[aria-hidden="true"]'))).click()
      
    • 避免使用动态类名:jss109可能是动态生成的,改用父元素的稳定属性定位,比如:
      WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@role, 'dialog')]//svg[@aria-hidden='true']"))).click()
      
  • 使用JavaScript强制点击:若元素因层级遮挡无法被正常点击,直接执行JS点击:
    svg_btn = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//svg[@aria-hidden='true']")))
    driver.execute_script("arguments[0].click();", svg_btn)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:55:17