page.exposeFunction(name, puppeteerFunction)
此方法可以在網頁上曝露一個方法,當網頁呼叫這方法,他會呼叫你自己定義的puppeteerFunction
page.focus(selector)
此方法會關注一個selector選出來的元件,多筆只會關注第一筆
page.frames()
回傳與此page關聯的array frames
page.goBack(options)
回到上一頁
page.goForward(options)
page.goto(url, options)
到一個url
page.hover(selector)
此方法會懸浮到一個selector選出來的元件,多筆只會關注第一筆
page.isClosed()
回傳網頁有沒有被關閉的boolean
page.keyboard
回傳此頁的
Keyboard
page.mainFrame()
回傳主要的frame
page.metrics()
回傳page相關的物件
page.mouse
回傳此頁的
Mouse
page.pdf(options)
會產生此頁的pdf,doc裡有可以設定相關資訊
page.queryObjects(prototypeHandle)
回傳陣列,陣列裡是物件的prototype
page.reload(options)
重新整理頁面
page.screenshot([options])
page.select(selector, ...values)
選擇元素,可以選擇多個
page.setBypassCSP(enabled)
設定要不要略過Content-Security-Policy
page.setCacheEnabled(enabled)
設定要不要忽略cache,預設是不要
page.setContent(html)
設定頁面的Html
page.setCookie(...cookies)
設定頁面的cookies
page.setDefaultNavigationTimeout(timeout)
會修改以下method timeout的時間,預設是30秒
page.goto(url, options)
page.goBack(options)
page.goForward(options)
page.reload(options)
page.waitForNavigation(options)
page.setExtraHTTPHeaders(headers)
加入更多的HTTP HEADER
page.setGeolocation(options)
設定此頁面的地理座標
page.setJavaScriptEnabled(enabled)
設定要不要啟動js,不要影響已經執行的js
page.setOfflineMode(enabled)
設定此頁面是不是離線模式
page.setRequestInterception(value)
設定要不要攔截request
const puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', interceptedRequest => {
if (interceptedRequest.url().endsWith('.png') || interceptedRequest.url().endsWith('.jpg'))
interceptedRequest.abort();
interceptedRequest.continue();
await page.goto('https://example.com');
await browser.close();
page.setUserAgent(userAgent)
設定屬於此頁的userAgent
page.setViewport(viewport)
設定要顯示的方式,像是裝置,每個頁面都可以設定不同的方式
page.tap(selector)
觸碰選出來的元素,如果需要滑動就會滑動頁面,會用page.touchscreen去實現
page.target()
回傳創造此頁面page的目標
page.title()
回傳此頁面的title
page.touchscreen
回傳此頁面Touchscreen
page.tracing
回傳此頁面Tracing
page.type(selector, text[, options])
再指定的元素上輸入文字,每個字都會用到keydown, keypress/input, 和 keyup 事件
page.url()
回傳此頁的url
page.viewport()
回傳此頁的viewport
page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
可以等待selector、時間、或funcition載入到頁面或執行完,再接下去執行
page.waitForFunction(pageFunction[, options[, ...args]])
與上面的等待function用法相同,這方法是捷徑而已。可以用於等待頁面載入到一定寬度再改變Viewport
page.waitForNavigation(options)
會等待頁面轉跳完再接下去執行
const [response] = await Promise.all([
page.waitForNavigation(), // The promise resolves after navigation has finished
page.click('a.my-link'), // Clicking the link will indirectly cause a navigation
page.waitForRequest(urlOrPredicate, options)
等待request結束
const firstRequest = await page.waitForRequest('http://example.com/resource');
const finalRequest = await page.waitForRequest(request => request.url() === 'http://example.com' && request.method() === 'GET');
return firstRequest.url();
page.waitForResponse(urlOrPredicate, options)
等待response
const firstResponse = await page.waitForResponse('https://example.com/resource');
const finalResponse = await page.waitForResponse(response => response.url() === 'https://example.com' && response.status() === 200);
return finalResponse.ok();
page.waitForSelector(selector[, options])
等待selector出現,程式才會繼續執行
const puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
let currentURL;
//等待img tag出現
.waitForSelector('img')
.then(() => console.log('First URL with image: ' + currentURL));
//非同步 每次都會等待tag第一次出現
for (currentURL of ['https://example.com', 'https://google.com', 'https://bbc.com'])
await page.goto(currentURL);
await browser.close();
page.waitForXPath(xpath[, options])
等待xpath出現,程式才會繼續執行
page.workers()
回傳worker