gpt4 book ai didi

javascript - NightmareJS : “Failed to execute ' querySelector' on 'Document' : '#LINK1$1' is not a valid selector.”

转载 作者:行者123 更新时间:2023-12-03 13:23:52 24 4
gpt4 key购买 nike

我正在使用NightmareJS抓取一个网站以获取数据,并且该网站使用id来 anchor 定标签,其方式类似于下面的代码。

<div>
<a id="#LINK1$1"></a>
</div>

我正在尝试使用'.click(Selector)'方法,该方法默认使用querySelector,但是我似乎无法通过id获得 anchor 标记。
我都尝试过
.click('#LINK1$1'),
.click('\u{0023}LINK\u{0031}\u{0024}\u{0031}')

但是它们都导致相同的错误
"Failed to execute 'querySelector' on 'Document': '#LINK1$1' is not a valid selector."

我该怎么办?

最佳答案

您可以使用Xpath方法来执行此操作。 Puppeteer具有xpath功能。

理论

根据他们的文档,

page.$x(expression)
expression <string> Expression to evaluate.
returns: <Promise<Array<ElementHandle>>>
The method evaluates the XPath expression.

它将返回一个元素数组。我们可以根据需要 click它们。

实践

获取元素的xpath,
enter image description here

现在应用
// we execute the xpath
const elems = await page.$x(`//*[@id="#LINK1$1"]`)

// We click the first element, since it returns an array
await elems[0].click();

完毕!

顺便说一句,这也适用于浏览器,
function getElementByXpath(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
getElementByXpath(`//*[@id="#LINK1$1"]`)
// >> Returns single node <a id=​"#LINK1$1">​Test​</a>​

关于javascript - NightmareJS : “Failed to execute ' querySelector' on 'Document' : '#LINK1$1' is not a valid selector.”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com