如何在页面中搜索特定的URL,然后使用Puppeteer单击该页面?

时间:2019-06-10 09:51:15

标签: puppeteer google-chrome-headless

最近几天我一直在努力弄清楚如何使用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.querySelectordocument.querySelectorAll的许多不同变体(以及它们的Puppeteer版本-即page.$page.$$),但都无法正常工作。

如果有人能指出正确的方向,我将不胜感激!

1 个答案:

答案 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...
}