我使用的是Chrome Headless和chrome-remote-interface
npm 套餐
const chromeLauncher = require('chrome-launcher')
const CDP = require('chrome-remote-interface')
const fs = require('fs')
async function launchChrome() {
return chromeLauncher.launch({
port: 9222,
chromeFlags: ['--disable-gpu', '--headless']
})
}
(async function () {
const chrome = await launchChrome()
const client = await CDP({port: 9222})
const {Page} = client
await Page.enable()
await Page.navigate({url: 'http://...'})
await Page.loadEventFired()
const {data} = await Page.captureScreenshot()
fs.writeFileSync('screenshot.png', Buffer.from(data, 'base64'))
await protocol.close()
await chrome.kill()
})()
但我加载的页面包含 iframe ,我想在其中执行一些操作(点击某些元素或通过 DOM访问它们.querySelector )在拍摄截图之前。
是否可以切换当前'活动'以某种方式通过Chrome DevTools协议框架?就像在Nightwatch.js / Selenium中可能的那样:browser.frame(frameIndex)