[英]How do I make puppeteer click on link?
我想用 puppeteer 制作一个刮板,它打开一个网站,使用它的搜索栏并打开第一个链接。
那是代码:
const puppeteer = require('puppeteer');
(async () => {
let browser = await puppeteer.launch();
let page = await browser.newPage();
await page.goto('https://example.com', {waitUntil: 'networkidle2'});
await page.click('[name=query]');
await page.keyboard.type("(Weapon)");
await page.keyboard.press('Enter');
await page.waitForSelector('div[class="search-results"]', {timeout: 100000});
});
问题是我无法从搜索结果中打开第一个链接,我尝试使用 page.click() 但除了 URL 之外,所有搜索结果都相同。
我想知道的是如何让它从搜索结果中打开第一个链接。
还有更多方法可以解决这个问题。 我建议您尝试一下,以便您学习不同的方法。
await page.click('.search-results a');
事实证明 Puppeteer 总是点击它找到的第一个元素,所以如果你想要第一个元素,这就足够了。
或者你可以 select 所有链接然后点击第一个:
const resultLinks = await page.$$('.search-results a');
resultLinks[0].click();
最好在此处也包含一个条件,这样您就不会因为没有找到任何元素而导致错误:
const resultLinks = await page.$$('.search-results a');
if (resultLinks.length) resultLinks[0].click();
还有更多方法,所以如果你想了解更多,请参考API 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.