これまでのところ、リンクをダウンロードしたいウェブサイトにプログラミングを行って選択すると、firefoxダイアログボックスが表示され、何をすべきかわかりません。このファイルをデスクトップ上のフォルダーに保存したい。私はこれをナイトリービルドに使用しているので、これが機能する必要があります。助けてください。
以下は、Webサイトからダウンロードリンクを取得する私のコードです。
driver = web driver.Firefox()
driver.implicitly_wait(5)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]".click()
Firefox
にこの特定のファイルタイプを自動的に保存させる必要があります。
これは、_browser.helperApps.neverAsk.saveToDisk
_プリファレンスを設定することで実現できます。
_from Selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", 'PATH TO DESKTOP')
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]").click()
_
詳細説明:
browser.download.folderList
_は、デフォルトのDownloads
ディレクトリを使用しないように指示しますbrowser.download.manager.showWhenStarting
_はダウンロードの進行状況を表示しますbrowser.download.dir
_はダウンロード用のディレクトリを設定しますbrowser.helperApps.neverAsk.saveToDisk
_は、選択した_mime-types
_のファイルを自動的にダウンロードするようFirefoxに指示しますこれらの設定はすべて、ブラウザの_about:config
_で表示できます。また、非常に詳細なドキュメントページも利用できます: About:config entries 。
また、xpath
アプローチを使用する代わりに、 find_element_by_partial_link_text()
を使用します。
_driver.find_element_by_partial_link_text("DEV.tgz").click()
_
参照:
Chromeを使用してアプリケーションが動的に生成される場合(mime-types)は、Chromeはファイルのダウンロードポップアップを開かないため、ブラウザの方が適しています。ただし、複数のダウンロードが必要な場合は、複数のダウンロードオプションを有効にする必要があります。