通过 Chromium 弹出框与 Playwright 进行身份验证

Authenticating through Chromium popup box with Playwright

提问人:AveryH 提问时间:9/8/2023 更新时间:9/22/2023 访问量:170

问:

我正在尝试使用 Playwright 编写多个设备的脚本,以调整它们的配置设置。某些型号的设备通过 Chrome 中的弹出对话框请求身份验证。

Popup Box

这些弹出框不会触发 Playwright 中的弹出窗口或对话事件。我不能针对他们进行互动。Web 门户是使用 JQuery 构建的。在某些设备上,会公开 JSON 数据传输对象,以便我可以调用

await page.evaluate(() => {
            jQuery.ajaxSettings.username = 'uname';
            jQuery.ajaxSettings.password = 'pword';
       })

要填写正确的字段,请点击登录按钮,它将在不触发弹出窗口的情况下对我进行身份验证。在其他设备上,它会发送一个 http 请求,触发重定向到看似空白的set_password.html页面。然后触发弹出窗口。重定向页面上没有加载 JS 或任何 HTML。

如何完成此身份验证步骤?如果我在浏览器中浏览自己,光标将自动放置在文本框中。但剧作家不是这样的,所以我一直无法使用键盘。我不知道我是否可以将鼠标悬停在它上面并选择它。如上所述,这些弹出窗口似乎不会触发 Playwright 中的对话或弹出事件。我尝试查看请求和响应标头,以查看它如何以及在何处传输凭据,以便我可以模仿它,但我很难找到正确的点。有什么想法吗?

JavaScript jQuery 节点.js Chromium 剧作家

评论


答:

3赞 Yaroslavm 9/8/2023 #1

看起来像是 Http 身份验证。 您可以通过创建新的浏览器上下文并在其中传递来进行身份验证。httpCredentials

参考

const context = await browser.newContext({
  httpCredentials: {
    username: 'uname',
    password: 'psswd',
  },
});
const page = await context.newPage();
await page.goto('url');
0赞 M András 9/22/2023 #2

只需将页面称为

http://uname:[email protected]

这将授权调用并打开没有对话框的页面