2

我想使用单击以下按钮pyppeteer

<button class="r3f3s" tabindex="0">Text here</button>

我正在尝试使用这里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 的控制台(木偶师)上工作的正确语法?因为这个看起来不正确,而且这个错误并不是真正的指示:

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

3 回答 3

1

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

完全匹配文本

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

包含文本

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

演示:

于 2019-01-05T00:59:55.773 回答
0

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

于 2021-02-16T05:39:11.653 回答
-2

[]是 css 属性选择器。CSS中的方括号

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

按钮元素没有text属性。会的textContent。但在实践中,它通常对我不起作用。我也不推荐:contains(),因为它会返回包含该文本的所有选择器。(例如“这里的文字”、“现在这里的文字”、“当时这里的文字”、“这里的文字”)。

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

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

不熟悉pyppeteer或如何使用它,但希望它有所帮助。

于 2019-01-05T00:05:50.360 回答