5

我正在尝试使用 WebDriver 浏览 https 站点并使用 WebDriver 下载文件。当我这样做时,弹出文件下载对话框。

WebDriver driver = new ChromeDriver();
driver.get("http://xxx/file1.txt");

我想知道有没有什么方法可以在 WebDriver 中调用一个方法来使用常规 https 请求下载文件而不模拟点击?

提前致谢。

4

2 回答 2

8

没有,至少没有任何方式适用于所有浏览器。您可能能够配置某些浏览器(Firefox 和 Chrome)以将文件下载到指定位置而无需提示。但是,对于您要询问的内容,您根本不需要 Selenium。任何程序化 HTTP 客户端都可以。在 Java 中,我建议查看 Apache 的 HttpClient;在 .NET 中使用 HttpWebRequest 将完成工作。请注意,如果您从中下载文件的站点需要身份验证,您可能需要在 HTTP 请求中指定自定义标头。

作为旁注,您可能需要重新评估为什么您认为需要测试下载文件,如果它不像在浏览器之外执行 HTTP 请求那么简单。本文非常详细地讨论了这个问题,并提供了一个非常合理的论点,为什么测试下载文件是有问题的,而且通常是不必要的。

于 2012-09-05T19:33:56.513 回答
7

是的你可以。您需要设置自定义 Chromedriver 配置文件:

profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = download_directory

它不会提示任何对话框。关于如何设置下载目录并验证文件是否具有任何给定大小,我有一个更详细的答案

可以在此处找到其他 chromedriver 开关:http: //peter.sh/experiments/chromium-command-line-switches/

于 2012-09-06T08:35:36.830 回答