我需要在一句话里有两个变量,但当我有两个变量时,它写了错误信息:不是一个有效的XPath表达式

0 人关注

当我有1个变量时,它可以工作,但我需要2个,然后它写了错误。

product = "Air Force 1 Low"
color = "White"
findJS = (
const $xOne = xp =>document.evaluate(xp, document, null,XPathResult.FIRST_ORDERED_NODE_TYPE, 
null).singleNodeValue;
($xOne("//*[contains(text(), """+product+""")]/../following-sibling::p/a[contains(text(), 
"""+color+""")]")).click();
    
3 个评论
错误是什么?
@Barmar 整个错误信息。消息:无效的元素状态。在'Document'上执行'evaluate'失败了。字符串'//*[contains(text(), Air Force 1 Low)]/.../following-sibling::p/a[contains(text(), White)'不是一个有效的XPath表达式。
你真的在 """+color+""" 之前有一个换行吗?那会在JS字符串字面中产生一个换行,这是不允许的。
javascript
python
xpath
Lukáš Čimo
Lukáš Čimo
发布于 2022-09-06
1 个回答
Barmar
Barmar
发布于 2022-09-06
已采纳
0 人赞同

应引用 contains() 的第二个参数。

使用f-string而不是concatenation来写这样的东西比较容易。