Selenide 无法下载 PDF

问题描述

我在使用 Selenide 的下载功能时遇到了一些问题。这是我的流程:

  1. 点击按钮
  2. 按钮打开显示 pdf 文件的新标签,网址为: 斑点:https://hostname.apps.something.else/9365b3ab-f0ad-45e9-85d2-db7e2fb5fd2e

所以基本上新标签是在 Chrome PDF 查看器中打开的。 我试图点击新标签中隐藏的下载按钮,但没有成功。 我的想法让我想到当我点击那个按钮时,这个新标签不应该打开,下载应该开始。这意味着像我在下面所做的那样设置一些配置首选项:

Configuration.browserCapabilities = new DesiredCapabilities();
Configuration.browserSize = "1920x1080";
Configuration.fileDownload = FileDownloadMode.FOLDER;
Configuration.downloadsFolder = "./src/pdfs";
Configuration.proxyHost = "30.40.34.82";
Configuration.proxyPort = 8080;
Configuration.proxyEnabled = true;
Configuration.fileDownload = FileDownloadMode.PROXY;
Configuration.browserCapabilities.setCapability("plugins.always_open_pdf_externally",true);
Configuration.browserCapabilities.setCapability("download.prompt_for_download",false);
Configuration.browserCapabilities.setCapability("pdfjs.disabled",true);

问题是,这仍然会打开新标签,但我没有找到这样的元素

File file = applicationList.printButton.download(30000);

解决方法

为什么先将 Configuration.fileDownload 设置为 FOLDER,然后再设置为 PROXY?无需设置两次。

我认为您无法通过 PROXY 下载文件,因为 blob: 类型的链接不会从服务器获取文件内容。

我认为您可以删除所有这些行:

Configuration.proxyHost = "30.40.34.82";
Configuration.proxyPort = 8080;
Configuration.proxyEnabled = true;
Configuration.fileDownload = FileDownloadMode.PROXY;
Configuration.browserCapabilities.setCapability("plugins.always_open_pdf_externally",true);
Configuration.browserCapabilities.setCapability("download.prompt_for_download",false);
Configuration.browserCapabilities.setCapability("pdfjs.disabled",true);

Selenide 方法 FOLDER 应该无需所有这些棘手的设置即可下载文件。

,

试试

System.setProperty("chromeoptions.prefs","plugins.always_open_pdf_externally=true")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...