selenium + java - 如何下载 pdf 并用不同的名称保存?
selenium + java - how to download a pdf and save with a different name?
作为现有 selenium 测试包工作的一部分,我被要求删除 Firefox 的实例以下载服务器生成的 PDF 文档 - 身份验证问题导致代理配置会话错误,阻止了文档下载。
在服务器中生成文档后,可以通过包含 UUID 的 URL 访问它。此 URL 已传递到新的 Firefox 实例,可以下载该文档。
这个 selenium 包是根据大约 10 年前的软件开发最佳实践 NOT 拼凑而成的。虽然它有效,但在大多数情况下,它的性能很差。
我可以使用服务 URL 加上 UUID 作为路径的一部分来访问服务器上生成的文档,因为这是文档生成过程的一部分。在当前的工作流程中,运行 包点击了一个 'generate document' 按钮。
生成此文档后,我需要将其下载到特定文件夹并重命名,以作为过程已完成的证明。
我进行了大量搜索,找到了几篇文章,这些文章让我对问题的某些部分有了深入的了解,但无法形成一个可行的解决方案。
我可以在无头模式下启动 chrome 驱动程序,但还不知道如何下载文档。由于浏览器 window 显示文档本身,页面上没有可点击的下载按钮。
谁能给我指出解决方案?
提前致谢,
没有办法使用普通的 Selenium 来完成,但尝试使用 AutoIT 来完成它:
https://www.lambdatest.com/blog/how-to-download-upload-files-using-selenium-with-java/
目前在 chrome 中打开 pdf
时我们可以看到下载选项,但是通过 selenium
我们无法对该下载按钮执行任何操作。这里我们的目标是将 pdf 下载到所需位置,因此我们需要在启动驱动程序之前 disable
pdf
插件。请看下面的代码,
所需的 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");
正在访问 PDF:
driver = new ChromeDriver(options);
driver.manage().deleteAllCookies();
driver.get("C:\Users\Downloads\Bill.pdf");
解释:
plugins.plugins_disabled --> 禁止在 [=58= 中查看 pdf
].
plugins.always_open_pdf_externally --> 在启动相应的link 或 URI
.
download.default_directory --> 可以更改默认下载位置。
作为现有 selenium 测试包工作的一部分,我被要求删除 Firefox 的实例以下载服务器生成的 PDF 文档 - 身份验证问题导致代理配置会话错误,阻止了文档下载。
在服务器中生成文档后,可以通过包含 UUID 的 URL 访问它。此 URL 已传递到新的 Firefox 实例,可以下载该文档。
这个 selenium 包是根据大约 10 年前的软件开发最佳实践 NOT 拼凑而成的。虽然它有效,但在大多数情况下,它的性能很差。
我可以使用服务 URL 加上 UUID 作为路径的一部分来访问服务器上生成的文档,因为这是文档生成过程的一部分。在当前的工作流程中,运行 包点击了一个 'generate document' 按钮。
生成此文档后,我需要将其下载到特定文件夹并重命名,以作为过程已完成的证明。
我进行了大量搜索,找到了几篇文章,这些文章让我对问题的某些部分有了深入的了解,但无法形成一个可行的解决方案。
我可以在无头模式下启动 chrome 驱动程序,但还不知道如何下载文档。由于浏览器 window 显示文档本身,页面上没有可点击的下载按钮。
谁能给我指出解决方案?
提前致谢,
没有办法使用普通的 Selenium 来完成,但尝试使用 AutoIT 来完成它:
https://www.lambdatest.com/blog/how-to-download-upload-files-using-selenium-with-java/
目前在 chrome 中打开 pdf
时我们可以看到下载选项,但是通过 selenium
我们无法对该下载按钮执行任何操作。这里我们的目标是将 pdf 下载到所需位置,因此我们需要在启动驱动程序之前 disable
pdf
插件。请看下面的代码,
所需的 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");
正在访问 PDF:
driver = new ChromeDriver(options);
driver.manage().deleteAllCookies();
driver.get("C:\Users\Downloads\Bill.pdf");
解释:
plugins.plugins_disabled --> 禁止在 [=58= 中查看 pdf
].
plugins.always_open_pdf_externally --> 在启动相应的link 或 URI
.
download.default_directory --> 可以更改默认下载位置。