NightmareJS:"无法执行查询选择器' on' Document':' #LINK1 $ 1'不是有效的选择器。"

时间:2018-06-01 04:11:42

标签: javascript nightmare

我使用NightmareJS来搜索网站以获取数据,并且该网站使用ID来识别他们以与下面的代码类似的方式锚定标记。

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

我试图使用&#39; .click(选择器)&#39;方法,它使用querySelector作为默认值,但我似乎无法通过id获取锚标记。 我试过了两次

.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."

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可以使用Xpath方式执行此操作。 Puppeteer有一个xpath函数。

理论

来自他们的文档,

>>> img= np.random.rand(2048,2048)
>>> kernel = np.ones((32,32), dtype=np.float)
>>> t1= time.time();dst1 = cv2.filter2D(img,-1,kernel);print(time.time()-t1)
0.208490133286
>>> t1= time.time();dst2 = signal.correlate(img,kernel,mode='valid',method='fft');print(time.time()-t1)
0.582989931107
>>> t1= time.time();dst3 = signal.convolve2d(img,kernel,mode='valid');print(time.time()-t1)
11.2672450542
>>> t1= time.time();dst4 = signal.correlate2d(img,kernel,mode='valid');print(time.time()-t1)
11.2443971634
>>> t1= time.time();dst5 = signal.fftconvolve(img,kernel,mode='valid');print(time.time()-t1)
0.581533193588

它将返回一个元素数组。我们可以page.$x(expression) expression <string> Expression to evaluate. returns: <Promise<Array<ElementHandle>>> The method evaluates the XPath expression. 随意使用它们。

实践

获取元素的xpath, enter image description here

现在应用它,

click

完成!

btw这也适用于浏览器,

// 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();