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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:24:03