簡體   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