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