我在使用Selenide的下载功能时遇到了一些问题。这是我的流程:
- 点击按钮
- 按钮打开新的选项卡,其中显示pdf文件和url为:blob:https://hostname.apps.something.else/9365b3ab-f0ad-45e9-85d2-db7e2fb5fd2e
所以基本上新的选项卡是在Chrome PDF Viewer中打开的。我试着点击新标签中隐藏的下载按钮,但没有成功。我的想法让我想到,当我点击那个按钮时,这个新标签不应该打开,下载应该开始。这意味着设置一些配置首选项,就像我在下面做的那样:
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"(