Seleniumでファイルを自動的にダウンロードしようとしています。そのために、デフォルトのダウンロードディレクトリを設定し、ダウンロードプロンプトを無効にします。それは機能していないようで、私が渡しているオプションは登録されていないようです。以下は、私がブラウザを作成する方法のサンプルです。誰かが何が起こっているのか知っていますか?
_chromedriver = 'PATH/TO/chromedriver'
download_fp = './testPrismaDownload/'
prefs = {
"download.Prompt_for_download" : False,
"download.default_directory": download_fp
}
options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome-stable'
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-setuid-sandbox')
options.add_experimental_option('prefs', prefs)
# i've tried various combinations of `options`, `chrome_options` (deprecated) and `desired_capabilities`
browser = webdriver.Chrome(options=options, desired_capabilities=options.to_capabilities(), executable_path=chromedriver)
_
指定したオプションはいずれも_browser.capabilities
_または_browser.desired_capabilities
_に表示されません。たとえば、機能のchromeOptionsのキーは_goog:chromeOptions': {'debuggerAddress': 'localhost:42911'}
_です。
download_button.click()
を実行すると、コマンドは成功しますが、何もダウンロードされません。また、-headlessオプションを指定せずにMacラップトップで試してみました。ダウンロードボタンをクリックすると、ブラウザがダウンロードダイアログを開き、ダウンロードの確認を求めます。
どんな助け/経験も大歓迎です。
Python 3.6.6 :: Anaconda、Inc。
Selenium '3.141.0'
Linux 9725a3ce7b7e 4.9.125-linuxkit#1SMP金9月7日08:20:28UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
問題が発生しました: https://github.com/SeleniumHQ/Selenium/issues/5722
それは簡単です。ドライバのスイッチウィンドウの後で、このイネーブラ関数を呼び出します。
def enable_download_in_headless_chrome(driver, download_dir):
# add missing support for chrome "send_command" to Selenium webdriver
driver.command_executor._commands["send_command"] = ("POST",'/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
command_result = driver.execute("send_command", params)
expected_download = 'ur/download/path'
opt = Options()
opt.add_experimental_option("prefs", { \
'download.default_directory': expected_download,
'download.Prompt_for_download': False,
'download.directory_upgrade': True,
})
opt.add_argument('--headless')
opt.add_argument('--window-size=1920,1080');
login_page = "https://www.google.com"
driver = webdriver.Chrome(options=opt)
driver.implicitly_wait(5)
driver.get(login_page)
driver.maximize_window()
#On below click you will be in new tab
scoresheet_tab = driver.find_element_by_xpath("//*[@class='sideNav-item is--scoresheet']").click()
instances = driver.window_handles
driver.switch_to.window(instances[1]) # this is the new browser
#this below function below does all the trick
enable_download_in_headless_chrome(driver, expected_download)