如何处理Playwright中弹出的客户卡/pfx身份验证证书

问题描述 投票:0回答:1

我的应用程序使用卡证书身份验证。 就目前而言,根据this GitHub Issue,Playwright 似乎没有提出/建议任何官方解决方案。
我找不到任何解决方法。

这是我尝试过的事情的列表:

  1. 寻找剧作家提供的解决方案 - 尚不存在
  2. 像处理常规警报一样处理它 - 不起作用
  3. 使用
    browser
    context
    - 不工作
  4. 提供凭据
  5. 使用
    launchPersistentContext
    提供凭据(仅限 Chromium)- 不工作
  6. 检查它是否在 iFrame 内 - 不是,看起来这个弹出窗口是 比 DOM 更低的级别
  7. 使用
    context.route("**/*")
    进行身份验证并使用提供 pfx
    agentOptions
    字段(有人在 GitHub 中建议的解决方法 问题)-无法弄清楚我做错了什么
  8. 使用剧作家发送键盘按键 - 没有帮助,看起来像 弹出窗口 比剧作家常规会议可以达到的水平要低—— 带我进行下一次尝试:
  9. 使用 Playwright 的
    CDPSession
    来使用它的事件处理程序 - 但在我查看 CDP Docs 后,他们似乎公开了基本的
    http auth
    事件,找不到有关
    SSL certificate
    事件的任何信息。

我还没有尝试过:

  1. 使用外部像素识别工具 - 学习每个工具的时间太多 工具,真的很重,据我所知,大多数都需要
    Java
    Python
typescript authentication alert playwright smartcard
1个回答
0
投票

我已经找到了目前可以完成这项工作的解决方法,但我并不完全满意:

使用

node-key-sender
npm 库执行 Windows 级键盘操作:

要求:

Java
(准确地说是
jre
)必须安装并添加到用户/系统环境变量中

安装

npm i node-key-sender

用法

// Warning! Do not touch the keyboard while this code run!
const ks = require("node-key-sender");

page.goto("<my_url>");
ks.sendKey("enter");

此示例导航到应用程序,然后“按”enter 以接受证书。如果有多个证书,可以添加其他键(如 downtab)以选择其他证书。

此解决方案的问题是这样的事实:键盘计时的继电器不可靠,阻止并行执行,需要

Java
,并且您无法确定是否选择了正确的证书,因为您无法按名称选择证书。

© www.soinside.com 2019 - 2024. All rights reserved.