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

ycl3bljg  于 2023-10-17  发布在  jQuery
关注(0)|答案(2)|浏览(175)

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

这些弹出框不会触发Playwright中的弹出或对话框事件。我无法瞄准他们进行互动。门户网站是用jQuery构建的。在某些设备上,JSON数据传输对象是公开的,因此我可以调用

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

要填写正确的字段,然后点击登录按钮,它将验证我没有触发弹出窗口。在其他设备上,它发送一个http请求,触发重定向到一个看似空白的set_password. html页面。然后弹出窗口被触发。重定向页面上没有加载JS或任何HTML。
我如何才能通过此身份验证步骤?如果我在浏览器中通过自己,光标将自动放置在文本框中。但是剧作家不这样做,所以我不能使用键盘。我不知道我是否可以把鼠标移到这个上面并选择它。如上所述,这些弹出窗口似乎不会触发Playwright中的对话框或弹出事件。我试着查看请求和响应头,看看它是如何以及在哪里传输凭证的,这样我就可以模仿它,但我很难找到正确的点。有什么想法吗?

ghg1uchk

ghg1uchk1#

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

const context = await browser.newContext({
  httpCredentials: {
    username: 'uname',
    password: 'psswd',
  },
});
const page = await context.newPage();
await page.goto('url');
oaxa6hgo

oaxa6hgo2#

只需简单地将该页称为
http://uname:email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)
这将授权调用并打开没有对话框的页面

相关问题