介紹
Playwright是一個由微軟開源Node.js庫,可透過單個API自動執行Chromium,Firefox和WebKit。 Playwright旨在實現跨瀏覽器的Web自動化,該自動化是綠色,功能強大,可靠且快速的。
GithubGithub stars數已達19.6k
https://github.com/microsoft/playwright
安裝npm i -D playwright
這將為Chromium,Firefox和WebKit安裝Playwright和瀏覽器二進位制檔案。安裝後,可以在Node.js指令碼中要求Playwright並自動進行Web瀏覽器互動。
能力Playwright旨在自動執行由Single Page Apps和Progressive Web Apps使用的廣泛且不斷增長的Web瀏覽器功能。
跨多個頁面,域和iframe的方案在執行動作(例如單擊,填充)之前自動等待元素準備就緒攔截網路活動以存根和模擬網路請求模擬移動裝置,地理位置,許可權透過陰影穿孔選擇器支援Web元件滑鼠和鍵盤的本機輸入事件上傳和下載檔案例子截圖此程式碼段導航至Chromium,Firefox和WebKit中的http://*****/,並儲存3個螢幕截圖。
const playwright = require('playwright');(async () => { for (const browserType of ['chromium', 'firefox', 'webkit']) { const browser = await playwright[browserType].launch(); const context = await browser.newContext(); const page = await context.newPage(); await page.goto('http://*****/'); await page.screenshot({ path: `example-${browserType}.png` }); await browser.close(); }})();
移動端和地理位置此程式碼段模擬給定地理位置上裝置上的Mobile Safari,導航到https://***,執行操作並截圖。
const { webkit, devices } = require('playwright');const iPhone11 = devices['iPhone 11 Pro'];(async () => { const browser = await webkit.launch(); const context = await browser.newContext({ ...iPhone11, locale: 'en-US', geolocation: { longitude: 12.492507, latitude: 41.889938 }, permissions: ['geolocation'] }); const page = await context.newPage(); await page.goto('https://***'); await page.click('text="Your location"'); await page.waitForRequest(/.*preview\/pwa/); await page.screenshot({ path: 'colosseum-iphone.png' }); await browser.close();})();
在瀏覽器上下文中執行指令碼此程式碼段在Firefox中導航至https://***,並在頁面上下文中執行指令碼。
const { firefox } = require('playwright');(async () => { const browser = await firefox.launch(); const context = await browser.newContext(); const page = await context.newPage(); await page.goto('https://***'); const dimensions = await page.evaluate(() => { return { width: document.documentElement.clientWidth, height: document.documentElement.clientHeight, deviceScaleFactor: window.devicePixelRatio } }); console.log(dimensions); await browser.close();})();
攔截網路請求
此程式碼段為WebKit頁面設定請求路由以記錄所有網路請求
const { webkit } = require('playwright');(async () => { const browser = await webkit.launch(); const context = await browser.newContext(); const page = await context.newPage(); // 記錄並繼續所有網路請求 page.route('**', route => { console.log(route.request().url()); route.continue(); }); await page.goto('http://***.com'); await browser.close();})();
總結playwright是一個非常強大的瀏覽器自動化庫,更多豐富的功能等待你的挖掘!
最新評論