Selenium通过XPath定位执行click操作出现语法错误如何解决
问题解决:Selenium XPath传入语法错误修复
你遇到的SyntaxError是Python字符串引号嵌套冲突导致的:你传入XPath的外层字符串用了双引号,XPath内部@id="col-content"也用了双引号,Python解析代码时会把第二个双引号识别为字符串结束标记,后续字符不符合语法规则就报错。
修复方案
方案1:替换外层引号(最推荐)
把XPath外层的双引号换成单引号,避免和内部双引号冲突,修改后代码如下:
import os from selenium import webdriver browser = webdriver.Chrome() browser.get("https://www.oddsportal.com/matches/soccer/") # 外层改为单引号 element = browser.find_element_by_xpath('//*[@id="col-content"]/div[3]/div/div/span/a[3]') element.click()
方案2:转义内层引号
给XPath内部的双引号前加反斜杠\做转义,告知Python这是字符串内部的普通字符:
element = browser.find_element_by_xpath("//*[@id=\"col-content\"]/div[3]/div/div/span/a[3]")
额外兼容提示:高版本Selenium适配
如果你使用的是Selenium 4.0及以上版本,find_element_by_xpath方法已被废弃,建议用官方推荐的By类写法,搭配显式等待还能避免元素未加载完成就执行点击的报错:
import os 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 browser = webdriver.Chrome() browser.get("https://www.oddsportal.com/matches/soccer/") # 最长等待10秒,直到目标元素可点击 element = WebDriverWait(browser, 10).until( EC.element_to_be_clickable((By.XPATH, '//*[@id="col-content"]/div[3]/div/div/span/a[3]')) ) element.click()
内容的提问来源于stack exchange,提问作者PyNoob
相关产品推荐
相关产品推荐

