知識點
page.type 獲取輸入框焦點並輸入文字
page.keyboard.press 模擬鍵盤按下某個按鍵,目前mac上組合鍵無效為已知bug
page.waitFor 頁面等待,可以是時間、某個元素、某個函數
page.frames() 獲取當前頁面所有的 iframe,然后根據 iframe 的名字精確獲取某個想要的 iframe
iframe.$('.srchsongst') 獲取 iframe 中的某個元素
iframe.evaluate() 在瀏覽器中執行函數,相當於在控制台中執行函數,返回一個 Promise
Array.from 將類數組對象轉化為對象
page.click() 點擊一個元素
iframe.$eval() 相當於在 iframe 中運行 document.queryselector 獲取指定元素,並將其作為第一個參數傳遞
iframe.$$eval 相當於在 iframe 中運行 document.querySelectorAll 獲取指定元素數組,並將其作為第一個參數傳遞
一些默認的設置和開發調試建議
1. 使用Headless模式
Puppeteer默認以Headless模式加載Chromium,如果想加載完整的Chromium(這樣方便觀察網頁加載的效果究竟是怎么樣的),可以執行以下命令
const browser = await puppeteer.launch({headless: false}); // default is true
2. 使執行本地版本的Chrome或者Chromium
const browser = await puppeteer.launch({executablePath: '/path/to/Chrome'});
3. 延遲執行Puppeteer
const browser = await puppeteer.launch({ headless: false, slowMo: 250 // slow down by 250ms });
4. 獲取控制台輸出
可以監聽console的事件,也可以通過evaluate來執行console
page.on('console', msg => console.log('PAGE LOG:', msg.text())); await page.evaluate(() => console.log(`url is ${location.href}`));
5. 設置頁面視窗大小
await page.setViewport({ width: 1366, height: 768 * 2 });
