提问人:AveryH 提问时间:9/8/2023 更新时间:9/22/2023 访问量:170
通过 Chromium 弹出框与 Playwright 进行身份验证
Authenticating through Chromium popup box with Playwright
问:
我正在尝试使用 Playwright 编写多个设备的脚本,以调整它们的配置设置。某些型号的设备通过 Chrome 中的弹出对话框请求身份验证。
这些弹出框不会触发 Playwright 中的弹出窗口或对话事件。我不能针对他们进行互动。Web 门户是使用 JQuery 构建的。在某些设备上,会公开 JSON 数据传输对象,以便我可以调用
await page.evaluate(() => {
jQuery.ajaxSettings.username = 'uname';
jQuery.ajaxSettings.password = 'pword';
})
要填写正确的字段,请点击登录按钮,它将在不触发弹出窗口的情况下对我进行身份验证。在其他设备上,它会发送一个 http 请求,触发重定向到看似空白的set_password.html页面。然后触发弹出窗口。重定向页面上没有加载 JS 或任何 HTML。
如何完成此身份验证步骤?如果我在浏览器中浏览自己,光标将自动放置在文本框中。但剧作家不是这样的,所以我一直无法使用键盘。我不知道我是否可以将鼠标悬停在它上面并选择它。如上所述,这些弹出窗口似乎不会触发 Playwright 中的对话或弹出事件。我尝试查看请求和响应标头,以查看它如何以及在何处传输凭据,以便我可以模仿它,但我很难找到正确的点。有什么想法吗?
答:
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]
这将授权调用并打开没有对话框的页面
评论