Puppeteer筆記(七):Puppeteer切換瀏覽器TAB頁


Puppeteer系列

1、Puppeteer筆記(一):Puppeteer簡介

2、Puppeteer筆記(二):Puppeteer安裝及實例Demo

3、Puppeteer筆記(三):Puppeteer獲取元素及元素屬性 

4、Puppeteer筆記(四):Puppeteer模擬鍵盤 

5、Puppeteer筆記(五):Puppeteer文件上傳 

6、Puppeteer筆記(六):Puppeteer切換frame操作 

7、Puppeteer筆記(七):Puppeteer切換瀏覽器TAB頁 

8、Puppeteer筆記(八):Puppeteer執行自定義Javascript方法 

一、Puppeteer切換瀏覽器TAB頁

1、browser.pages()

二、上手實例Demo

  功能測試:打開www.ly.com首頁,定位搜索"蘇州",獲取新打開頁面上的搜索結果的第一個名稱,並在終端輸出打印出來。下面列舉了兩種方法供參考。

 1 const puppeteer = require('puppeteer');
 2 async function tab() {
 3     //創建一個Browser瀏覽器實例,並設置相關參數
 4     const browser = await puppeteer.launch({
 5         headless: false,
 6         defaultViewport: null,
 7         args: ['--start-maximized'],
 8         ignoreDefaultArgs: ['--enable-automation']
 9     });
10     //創建一個Page實例
11     const page = await browser.newPage();
12     await page.goto("https://www.ly.com", {
13         waitUntil: 'networkidle2'
14     });
15     const searchText = await page.$('#pt__search_text');
16     await searchText.type('蘇州');
17     const searchBtn = await page.$('#pt__search_btn');
18     await searchBtn.click();
19     await page.waitFor(3000);
20     //方法一:browser.pages(),可以獲取所有打開的Page對象,可以通過遍歷或篩選找到自己想獲取的Page對象
21     const newPage = (await browser.pages())[2];
22     //方法二:通過browser.waitForTarget獲取target
23     const target = await browser.waitForTarget(t => t.url().includes('https://so.ly.com/hot'));
24     const newPage = await target.page();
25     //獲取搜索結果列表頁第一個標題的值,並輸出終端
26     const newPageText = await newPage.$eval('div.search_list > ul > li:nth-child(1) > div > a > h3', ele => ele.innerText);
27     console.log('newPageText:' + newPageText);
28     //關閉瀏覽器
29     await browser.close();
30 }
31 tab();

  注意點:方法一中browser.pages()定位頁面時,遍歷時注意頁面是從0開始計數的。所以定位的是第2個頁面。如下圖所示。

  以上參考代碼運行結果如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM