5

私はselenium webdriverを使用して、Firefoxを使用してダウンロードを行っています。現時点では、スクリプトはダウンロードが開始されてから特定の時間待機し、Firefox を閉じます。ダウンロードの完了時に自動的に終了するように Firefox を設定する方法があるかどうか知りたいですか? または、selenium webdriver を使用して、ダウンロードが完了したかどうかを確認できますか? スクリプトに依存関係が追加される可能性があるため、アドオンを使用したくありません。wget/curl などを使用してファイルをダウンロードすることはできません。前もって感謝します

4

3 に答える 3

2

Selenium WebDriver APIのWebDriverWaitクラスを使用して、次のコードを使用してポーリングを実行できます。

       (new WebDriverWait(driver, 180, 10)).until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                return !downloadedFilePart.exists();
            }
         });

上記のコードは、.part拡張子の付いたファイルをチェックします。プログラムは、ダウンロードが完了するか、3分後にタイムアウトになるまで、10秒ごとにダウンロードされます。

于 2012-10-30T23:08:54.620 に答える
2

イグナシオ・コントレラスが言ったこと。ダウンロード パスをポーリングすることは、おそらく最良の (最も堅牢な) ソリューションです。

代替#1:

Download StatusbarアドオンFirefoxProfileと一緒に使用します。「ウィンドウを閉じた後、ダウンロード マネージャーでダウンロードを続行する」(または非常に類似したもの) という便利なオプションがあり、ダウンロードが完了するまで Firefox をバックグラウンドで実行し続けることができます。

代替#2:

これ(または他の同様の WebDriver に適したツール)を使用してファイルを直接ダウンロードします... または可能であれば、これを使用します。これにより、Firefox がプロセスから完全に除外されます。

于 2012-05-23T09:10:18.280 に答える
1

これが機能するかどうかはわかりませんが、Firefox を介してダウンロード場所を探索することを検討しましたか? ダウンロードが完了するまでポーリングします。

私が間違っていなければ、ファイルがダウンロードされると、拡張子が .part の余分なファイルが存在するはずです。

このようなもの(疑似コード):

...

WebDriver poller = new FirefoxDriver()
poller.get("path to download folder");

while ("file with .part extension is present") {
    // Wait/sleep some time
    // Refresh poller
}

// close downloading firefox instance
firefox.quit();
// close the polling instance
poller.quit();

それが役に立てば幸い

于 2012-05-23T08:01:59.207 に答える