在Pyppeteer(Python Puppeteer)中通过其文本选择一个按钮

时间:2019-01-04 18:50:15

标签: javascript python jquery puppeteer pyppeteer

我想使用pyppeteer

单击以下按钮
<button class="r3f3s" tabindex="0">Text here</button>

我正在尝试像建议的here使用Jquery来做到这一点:

btn = await page.querySelector('button[text=\'Text here\']')

或此处:

btn = await page.querySelector('button:contains(text(), 'Text here'))

但是它似乎不起作用。我还注意到,在Jquery上在线发布的许多示例似乎都无法在Google chrome的控制台上运行,因此无法在pyppeteer上运行。

我的问题是如何通过按钮的文本选择按钮,还有谁能将我引导到一个指南,该指南解释哪种Jquery选择器语法适合在Google chrome控制台(操纵up)上使用?因为this one似乎不正确,并且该错误实际上并不表示:

Uncaught DOMException: Failed to execute 'querySelector' on 'Document': is not a valid selector.
at <anonymous>:1:10

3 个答案:

答案 0 :(得分:1)

CSS选择器包含当前不支持的文本,但是您可以使用Xpath

完全匹配文字

btn = await page.$x('//button[text()="Text here"]')

包含文字

btn = await page.$x('//button[contains(text(), "Text he")]')

演示:

答案 1 :(得分:0)

[]是CSS属性选择器。 Square brackets in CSS

:contians()是jQuery选择器。 https://api.jquery.com/contains-selector/

button元素没有text属性。将会是textContent。但实际上,它通常对我不起作用。我也不建议使用:contains(),因为它会返回包含该文本的所有选择器。 (例如,“此处文字”,“此处文字”,“此处文字”,“此处文字”)。

当我想通过文本查找内容时,我使用.filter()http://api.jquery.com/filter/

$('button').filter(function() { return this.textContent === 'Text here'; });

不熟悉pyppeteer或该如何工作,但希望对您有所帮助。

答案 2 :(得分:0)

我遇到了类似的问题,并通过使用解决了它 await page.waitForSelector(selector)