Java调用Playwright时出现‘Failed to install browsers’错误的求助
Java调用Playwright时出现‘Failed to install browsers’错误的求助
我现在在公司网络环境下运行Java应用,调用Playwright的时候一直失败,报错信息如下:
Exception in thread "main" java.lang.RuntimeException: Failed to create driver at com.microsoft.playwright.impl.driver.Driver.createAndInstall(Driver.java:105) at com.microsoft.playwright.impl.driver.Driver.ensureDriverInstalled(Driver.java:57) at com.microsoft.playwright.impl.PlaywrightImpl.createImpl(PlaywrightImpl.java:45) at com.microsoft.playwright.impl.PlaywrightImpl.create(PlaywrightImpl.java:35) at com.microsoft.playwright.Playwright.create(Playwright.java:96) at com.microsoft.playwright.Playwright.create(Playwright.java:100) Caused by: java.lang.RuntimeException: Failed to install browsers, exit code: 1 at com.microsoft.playwright.impl.driver.jar.DriverJar.installBrowsers(DriverJar.java:100) at com.microsoft.playwright.impl.driver.jar.DriverJar.initialize(DriverJar.java:69) at com.microsoft.playwright.impl.driver.Driver.initialize(Driver.java:64) at com.microsoft.playwright.impl.driver.Driver.createAndInstall(Driver.java:101)
根据Playwright的文档提示,这个问题应该是因为我处于公司防火墙之后导致的,文档里提到可以通过设置代理或者使用公司的制品库来获取二进制文件,但给出的例子都是命令行下的操作方式,比如:
HTTPS_PROXY=https://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"
我完全找不到Java代码层面的配置示例,现在已经试过好几种方法都没解决,想请教大家我哪里弄错了?
我的代码情况
我是用ProcessBuilder来启动一个包含Playwright代码的Java进程:
ProcessBuilder processBuilder = new ProcessBuilder(command); Process process = processBuilder.start();
其中command是启动我的Java类的命令,这个类里的Playwright核心代码是:
Playwright playwright = Playwright.create(); BrowserType browserType = playwright.chromium(); LaunchOptions lo = new BrowserType.LaunchOptions(); lo.setSlowMo(500); Browser browser = browserType.launch(lo);
报错就出在browserType.launch(lo)这一步,提示无法安装浏览器。
我已经尝试过的方法
给ProcessBuilder设置环境变量
我试过在启动进程时添加环境变量,但都没效果:- 设置
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1:结果进程直接挂起,完全没反应 - 设置
PLAYWRIGHT_DOWNLOAD_HOST为公司的制品库地址:还是报同样的错误
代码大概是这样的:
ProcessBuilder processBuilder = new ProcessBuilder(command); Map<String, String> env = processBuilder.environment(); env.put("PLAYWRIGHT_DOWNLOAD_HOST", "myCompanyArtifactory"); Process process = processBuilder.start();- 设置
给LaunchOptions设置环境变量
我也尝试过在Playwright的LaunchOptions里设置环境变量,同样没有改善:LaunchOptions lo = new BrowserType.LaunchOptions(); lo.setEnv(map_containing_env_vars);在Eclipse里配置全局代理
我在Eclipse的Window -> Preferences -> General -> Network Connections里把Active Provider设为Manual,并且配置了HTTP和HTTPS的代理地址,还是没用。
有没有大佬能帮我看看,我是不是漏了什么配置,或者哪里操作错了?
备注:内容来源于stack exchange,提问作者se22as
相关产品推荐
相关产品推荐

