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

XPath在Chrome中有效但在Python Selenium中失效的问题求助

解决Selenium中XPath定位含单引号元素的报错问题

问题原因

你在Python代码里传递给execute_script的XPath表达式被错误转义,出现了"这类HTML实体,这不属于合法的XPath语法,导致document.evaluate执行失败。

解决方案

方案1:修正execute_script中的字符串转义

让传递给JS的XPath和原生JS里的格式一致,调整Python的字符串嵌套与转义方式:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

window = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
window.get("www.someurl.com")
# 用三重单引号包裹JS代码,内部双引号直接转义
window.execute_script('''
singleQuotes = document.evaluate("//div[contains(text(), \"'quotes'\")]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
singleQuotes = singleQuotes.snapshotItem(0);
console.log(singleQuotes);
''')

也可以换用单引号嵌套的方式,避免双引号转义:

window.execute_script("""
singleQuotes = document.evaluate('//div[contains(text(), \'\'quotes\'\')]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
singleQuotes = singleQuotes.snapshotItem(0);
console.log(singleQuotes);
""")

方案2:直接使用Selenium原生定位方法(更简洁)

没必要通过execute_script调用document.evaluate,Selenium本身支持直接用XPath定位元素:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

window = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
window.get("www.someurl.com")

# 方法A:双引号包裹XPath,内部单引号直接使用
element = window.find_element(By.XPATH, "//div[contains(text(), \"'quotes'\")]")
# 方法B:单引号包裹XPath,内部单引号用两个单引号转义
element = window.find_element(By.XPATH, '//div[contains(text(), ''\'quotes''\')]')
# 方法C:字符串格式化动态传入目标文本
target_text = "'quotes'"
element = window.find_element(By.XPATH, f"//div[contains(text(), '{target_text}')]")

print(element)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:15:29