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個頁面。如下圖所示。
以上參考代碼運行結果如下