2

機械化を試みた/あきらめた後、PythonでSeleniumを使用してファイルのダウンロードを自動化しようとしています。私はセレンでやるべきだと思うことはすべてやったし、フォームに必要なものを記入したり、ボタンをクリックしたりした.しかし、私の問題は何もダウンロードしていない. これが私のコードの関連部分です(firefoxプロファイルが含まれています):

fp = webdriver.FirefoxProfile()

fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",True)
fp.set_preference("browser.download.dir","Users/user/Downloads")
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","text/tsv")

browser = webdriver.Firefox(firefox_profile=fp)

... ... ...

elem=browser.find_element_by_class_name('data')
elem.send_keys(Keys.TAB)

elem.send_keys(Keys.TAB)

elem.send_keys(Keys.RETURN)

time.sleep(9.0)

ファイルのダウンロードにさらに時間が必要かどうかを確認するために待っているだけなので、sleep(9.0) を使用します。TAB の後に [送信] ボタンが強調表示されているのがわかりますが、その後は何も起こらないようです。完全に失われました。何千回もグーグルで検索しましたが、何も思いつかないようです。

4

1 に答える 1

2

一般的に言えば、ダウンロード ファイル チューザーはブラウザーではなく OS の一部であるため、Selenium で制御することはできません。2 つの解決策があります。

1) OS 依存のダイアログが表示されないように、Firefox のプロファイル設定を設定します。そのためには、プロファイルを次のように変更する必要があります。

fp.set_preference("browser.download.manager.showWhenStarting",False)

これに関するリンク: http://blog.codecentric.de/en/2010/07/file-downloads-with-selenium-mission-impossible/

2) より良い解決策は、セレンでファイルをダウンロードしないことです。この優れた記事を読んでください: http://ardesco.lazerycode.com/testing/webdriver/2012/07/25/how-to-download-files-with-selenium-and-why-you-shouldnt.html 基本的にこれは、セレンの外でファイルをダウンロードすることを示唆しています。

編集:2番目のオプションのリンクが死んでいたので、リンクを変更しました。それを指摘してくれてthx。

于 2013-06-30T10:03:47.457 に答える