知識點
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 });