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结构截图:


可行的解决方向:
- 检查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()
- 注意属性大小写:CSS选择器里
- 使用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
相关产品推荐
相关产品推荐

