最近几天我一直在努力弄清楚如何使用Puppeteer在页面上搜索包含特定单词的链接,然后单击第一个。
页面的HTML包含许多链接,例如:
<a href="https://www.example.com/home">Example - Home</a>
<a href="https://www.example.com/about">Example - About</a>
<a href="https://www.example.com/contact">Example - Contact</a>
,我希望它找到其中第一个带有“ example.com”字样的网址,然后单击该链接。如果该页面上没有这样的URL,我希望它再单击另一个按钮。
我对Javascript并不是特别熟悉,感觉就像我尝试了使用document.querySelector
和document.querySelectorAll
的许多不同变体(以及它们的Puppeteer版本-即page.$
和page.$$
),但都无法正常工作。
如果有人能指出正确的方向,我将不胜感激!
答案 0 :(得分:1)
您可以使用attribute selector [attr*=value]
。从链接中引用:
表示属性名称为 attr 的元素,其值在字符串中至少包含一个 value 出现。
要在操纵up中使用选择器,可以使用page.$
函数来查询第一个元素:
const link = await page.$('a[href*="example.com"]');
if (link) {
await link.click();
} else {
// no link with such attribute on the page, click another button...
}