selenium + java - 如何下载pdf并使用不同的名称保存?

gtl*_*wig 3 java selenium download google-chrome-headless

作为现有 selenium 测试包工作的一部分,我被要求删除 Firefox 的实例化以下载服务器生成的 PDF 文档 - 身份验证问题导致代理配置会话错误,导致文档无法下载。

当文档在服务器中生成时,可以通过包含 UUID 的 URL 来访问它。该 URL 被传递到一个新的 Firefox 实例,并且可以下载该文档。

这个 selenium 包的组合并没有遵循大约 10 年前软件开发的最佳实践。尽管它有效,但在大多数情况下,其性能相当差。

我可以使用服务 URL 加上 UUID 作为路径的一部分来访问服务器上生成的文档,因为这是文档生成过程的一部分。在当前工作流程中,有一个“生成文档”按钮,运行包可单击该按钮。

生成此文档后,我需要将其下载到特定文件夹并重命名,以证明该过程已圆满完成。

我进行了大量搜索,找到了一些文章,这些文章让我深入了解了该问题的部分内容,但无法提出可行的解决方案。

我可以在无头模式下启动 chrome 驱动程序,但尚未弄清楚如何下载该文档。由于浏览器窗口显示文档本身,因此页面上没有可单击的下载按钮。

有人能在这里给我指出一个解决方案吗?

提前致谢,

Nan*_*n A 6

目前,在 Chrome 中打开时,pdf我们可以看到下载选项,但selenium我们无法对该下载按钮执行任何操作。这里我们的目标是将 pdf 下载到所需位置,因此我们需要在启动驱动程序之前安装插件disablepdf请看下面的代码,

所需的 ChromOptions:

   ChromeOptions options = new ChromeOptions();
   HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
       chromeOptionsMap.put("plugins.plugins_disabled", new String[] { "Chrome PDF Viewer" });
       chromeOptionsMap.put("plugins.always_open_pdf_externally", true);
       chromeOptionsMap.put("download.default_directory", "C:\\Users\\Downloads\\test\\");
       options.setExperimentalOption("prefs", chromeOptionsMap);
       options.addArguments("--headless");
  
Run Code Online (Sandbox Code Playgroud)

访问 PDF:

driver = new ChromeDriver(options);
driver.manage().deleteAllCookies();
driver.get("C:\\Users\\Downloads\\Bill.pdf");
Run Code Online (Sandbox Code Playgroud)

解释:

plugins.plugins_disabled -->禁用在 chrome 中查看pdf

plugins.always_open_pdf_externally -->在启动pdf相应的链接或URI.

download.default_directory -->可以更改默认下载位置。