我有一个Web应用程序,它可以与Chrome上的连接设备进行对话,由于特定原因,它需要在Docker容器中进行测试。该设备有两个USB端点,其中一个是仿真串行设备。
从容器内部直接访问HW和UI所需的各种设置都在那里,我的意思是,如果我从official Playwright Docker image内部手动启动Chromium,我可以使用所述网络应用程序来刷新设备,然后通过TTY连接连接到它。在这两种情况下,Chromium首先弹出一个对话框,我必须与之交互(通过从列表中选择设备),以授予浏览器对相关硬件的访问权限。
但是,如果我运行一个Playwright测试,试图自动化这个过程,第二个对话框根本没有列出任何TTY设备,导致测试失败。这个测试非常简单,只模拟了对webapp按钮的点击,这就是为什么我不相信测试本身与这种行为有任何关系。
我怀疑我如何推出Chromium和Playwright如何做这件事之间存在一些差异,但我还没有找到一种方法来比较两者。当手动运行Chrome时,我必须包含--no-sandbox
命令行选项。然而,我已经检查了chrome://sandbox
和Playwright似乎也在使用这个设置,可能在其他。
有什么方法可以看到Playwright正在使用什么命令行选项来启动Chromium吗?
2条答案
按热度按时间t1rydlwq1#
是的,您可以使用Playwright API来检索Playwright用于启动Chromium的命令行参数。Playwright中的browserType.launch()方法返回一个Browser示例,该示例具有一个process()方法,该方法提供有关浏览器进程的信息,包括命令行参数。
下面是一个如何检索Playwright用于启动Chromium的命令行选项的示例:
当您运行此代码时,它将使用Playwright启动Chromium,检索用于启动的命令行参数,并打印它们以进行比较。
希望这能帮上忙。
rt4zxlrg2#
事实证明,我是从错误的方向来处理这个问题的。
在Linux上,很容易获得用于启动任何运行进程的命令行:
找到PID最低的 chrome 工艺然后砰的一声,就是这样。
结果是