Electron
Playwright 为 Electron 自动化提供了实验性支持。你可以通过以下方式访问 electron 命名空间:
const { _electron } = require('playwright');
以下是一个 Electron 自动化脚本的示例:
const { _electron: electron } = require('playwright');
(async () => {
// 启动 Electron 应用
const electronApp = await electron.launch({ args: ['main.js'] });
// 在 Electron 上下文中执行表达式
const appPath = await electronApp.evaluate(async ({ app }) => {
// 这段代码运行在 Electron 主进程,这里的参数总是
// 主应用脚本中 require('electron') 的结果
return app.getAppPath();
});
console.log(appPath);
// 获取应用打开的第一个窗口,必要时等待
const window = await electronApp.firstWindow();
// 打印窗口标题
console.log(await window.title());
// 截取屏幕截图
await window.screenshot({ path: 'intro.png' });
// 将 Electron 控制台输出重定向到 Node 终端
window.on('console', console.log);
// 点击按钮
await window.click('text=Click me');
// 退出应用
await electronApp.close();
})();
支持的 Electron 版本包括:
- v12.2.0+
- v13.4.0+
- v14+
已知问题:
如果无法启动 Electron 并在启动过程中超时,请尝试以下方法:
- 确保
nodeCliInspect
(FuseV1Options.EnableNodeCliInspectArguments) 熔断器没有被设置为false
。
方法
launch
添加于: v1.9启动通过 executablePath 指定的 Electron 应用程序。
用法
await electron.launch();
await electron.launch(options);
参数
options
Object (可选)-
acceptDownloads
boolean (可选) 添加于: v1.12#是否自动下载所有附件。默认为
true
,表示接受所有下载。 -
启动应用程序时传递的额外参数。通常在此处传递主脚本名称。
-
bypassCSP
boolean (可选) 添加于: v1.12#切换是否绕过页面的内容安全策略(Content-Security-Policy)。默认为
false
。 -
colorScheme
null | "light" | "dark" | "no-preference" (可选) 添加于: v1.12#模拟 prefers-colors-scheme 媒体特性,支持值为
'light'
和'dark'
。详情参见 page.emulateMedia()。传递null
将重置为系统默认值。默认为'light'
。 -
启动应用程序的工作目录。
-
env
Object<string, string> (可选)#指定对 Electron 可见的环境变量。默认为
process.env
。 -
启动指定的 Electron 应用程序。如果未指定,则启动此包中安装的默认 Electron 可执行文件,位于
node_modules/.bin/electron
。 -
extraHTTPHeaders
Object<string, string> (可选) 添加于: v1.12#包含随每个请求发送的额外 HTTP 头的对象。默认为空。
-
httpCredentials
Object (可选) 添加于: v1.12#-
username
string用户名
-
password
string密码
-
origin
string (可选)限制在特定来源(scheme://host:port)发送 HTTP 凭据。
-
send
"unauthorized" | "always" (可选)此选项仅适用于从相应 APIRequestContext 发送的请求,不影响浏览器发送的请求。
'always'
- 每个 API 请求都会发送带有基本认证凭据的Authorization
头。'unauthorized
- 仅当收到带有WWW-Authenticate
头的 401 (Unauthorized) 响应时才发送凭据。默认为'unauthorized'
。
HTTP 认证凭据。如果未指定来源,用户名和密码会在收到未授权响应时发送给任何服务器。
-
-
ignoreHTTPSErrors
boolean (可选) 添加于: v1.12#发送网络请求时是否忽略 HTTPS 错误。默认为
false
。 -
locale
string (可选) 添加于: v1.12#指定用户区域设置,例如
en-GB
、de-DE
等。区域设置会影响navigator.language
值、Accept-Language
请求头值以及数字和日期格式规则。默认为系统默认区域设置。更多模拟信息请参阅我们的模拟指南。 -
offline
boolean (可选) 添加于: v1.12#是否模拟网络离线状态。默认为
false
。了解更多关于网络模拟的信息。 -
recordHar
Object (可选) 添加于: v1.12#-
omitContent
boolean (可选)可选设置,控制是否从 HAR 中省略请求内容。默认为
false
。已弃用,改用content
策略。 -
content
"omit" | "embed" | "attach" (可选)可选设置,控制资源内容管理。如果指定
omit
,则不持久化内容。如果指定attach
,资源将作为单独文件或 ZIP 存档中的条目持久化。如果指定embed
,内容将按照 HAR 规范内联存储在 HAR 文件中。对于.zip
输出文件默认为attach
,对于所有其他文件扩展名默认为embed
。 -
path
string文件系统上写入 HAR 文件的路径。如果文件名以
.zip
结尾,默认使用content: 'attach'
。 -
mode
"full" | "minimal" (可选)设置为
minimal
时,仅记录 HAR 路由所需的信息。这会省略大小、时间、页面、cookie、安全和其他类型的 HAR 信息,这些信息在从 HAR 回放时不使用。默认为full
。 -
urlFilter
string | RegExp (可选)用于过滤存储在 HAR 中的请求的 glob 或正则表达式模式。当通过上下文选项提供了 baseURL 且传递的 URL 是路径时,会通过
new URL()
构造函数合并。默认为无。
为所有页面启用 HAR 记录到
recordHar.path
文件。如果未指定,则不记录 HAR。确保等待 browserContext.close() 以保存 HAR。 -
-
recordVideo
Object (可选) 添加于: v1.12#-
dir
string存放视频的目录路径。
-
size
Object (可选)录制视频的可选尺寸。如果未指定,尺寸将等于
viewport
按比例缩小以适应 800x800。如果未明确配置viewport
,视频尺寸默认为 800x450。必要时每个页面的实际图片会按比例缩小以适应指定尺寸。
为所有页面启用视频录制到
recordVideo.dir
目录。如果未指定,则不录制视频。确保等待 browserContext.close() 以保存视频。 -
-
timeout
number (可选) 添加于: v1.15#等待应用程序启动的最大毫秒数。默认为
30000
(30 秒)。传递0
禁用超时。 -
timezoneId
string (可选) 添加于: v1.12#更改上下文的时区。支持的时区 ID 列表参见 ICU's metaZones.txt。默认为系统时区。
-
tracesDir
string (可选) 添加于: v1.36#如果指定,跟踪记录将保存到此目录。
-
返回