繁体   English   中英

如何让 puppeteer 点击链接?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM