You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webdriver IO提示printPage命令未实现 调用savePDF也报错如何解决

报错根因

printPage和savePDF是Webdriver IO DevTools协议专属API,你当前项目默认使用WebDriver协议(通过chromedriver/selenium-standalone启动服务),WebDriver标准协议未封装这两个命令,因此会触发「未实现」报错,和Chrome、chromedriver版本匹配无关。

解决方案

方案1:切换到DevTools协议运行用例

无需修改现有业务代码,只需修改wdio.conf.js配置,指定自动化协议为devtools即可:

// wdio.conf.js
exports.config = {
  // 新增如下配置项
  automationProtocol: 'devtools',
  // 其余原有配置保持不变
}

该协议为Webdriver IO内置能力,无需依赖chromedriver即可驱动Chrome、Edge等Chromium内核浏览器,原有printPage、savePDF调用可直接正常运行。

方案2:WebDriver协议下调用CDP原生接口实现打印

如果你的场景必须使用WebDriver协议(比如需要兼容多浏览器测试),可以直接调用Chrome DevTools Protocol的原生打印接口实现相同能力,示例代码如下:

const fs = require('fs/promises')

await browser.url('https://stackoverflow.com/')
// 调用CDP原生打印接口,可自定义打印参数
const pdfRes = await browser.callCDP('Page', 'printToPDF', {
  landscape: false,
  printBackground: true,
  paperWidth: 8.27, // A4纸宽度
  paperHeight: 11.69 // A4纸高度
})
// 将返回的base64格式PDF内容写入本地文件
await fs.writeFile('./page.pdf', Buffer.from(pdfRes.data, 'base64'))

注意:该方案仅支持Chromium内核浏览器,不适用于Firefox、Safari等非Chromium内核浏览器。

方案3:升级依赖版本(仅针对已配置devtools协议仍报错的场景)

你当前使用的7.16.x版本的Webdriver IO对DevTools协议的API覆盖不全,可将所有@wdio/开头的依赖升级到最新的7.x稳定版(如^7.32.0),删除node_modules重装依赖后即可解决。

内容的提问来源于stack exchange,提问作者Matt Herbstritt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:54:03