5

WebDriver を使用して https サイトをナビゲートし、WebDriver を使用してファイルをダウンロードしようとしています。このようにすると、ファイルのダウンロードダイアログがポップアップしました。

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

クリックをシミュレートせずに、通常のhttpsリクエストを使用してファイルをダウンロードするために、WebDriverでメソッドを呼び出すだけの方法はあるのでしょうか?

前もって感謝します。

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 に答える