硒以无头模式下载csv文件,它不起作用 [英] selenium to download csv file with headless mode, it is not working
问题描述
我使用 selenium 下载 csv 文件.(URL 就像 https://hogehoge_YYYYMMDD.csv )
I download csv file by using selenium. (URL is like https://hogehoge_YYYYMMDD.csv )
使用 --headless 选项时,它不起作用.但不添加无头选项,它是有效的!
With using --headless option, it's not working. But not adding headless option, it is worked!
有什么想法吗?
感谢您的帮助.
硒(3.10.0)
Python (2.7.10)
Chrome (66.0.3359.181) 我还尝试了最新的 Chrome 版本 67.0.3396.62.但同样的结果发生了.
selenium (3.10.0)
Python (2.7.10)
Chrome (66.0.3359.181) I also tried latest Chrome version 67.0.3396.62. But same result happens.
options = Options()
# if comment out this sentence, I can get csv file.
# options.add_argument('--headless')
options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36")
options.add_argument('--window-size=1280,1024')
options.add_experimental_option("prefs", {
"download.default_directory":DIR_NAME,
})
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options)
driver.set_window_size(1280, 720)
print URL
print "loading url"
driver.get(URL)
print "load end"
推荐答案
这就是答案.https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c86
Here is the answer. https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c86
我修复了我的代码.这是下面的内容.
I fixed my code. Here is the below.
def enable_download_in_headless_chrome(browser, download_dir):
#add missing support for chrome "send_command" to selenium webdriver
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
browser.execute("send_command", params)
options = Options()
options.add_argument('--headless')
options.add_argument("--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36")
options.add_argument('--window-size=1280,1024')
# options.add_experimental_option("prefs", {
# "download.default_directory":DIR_NAME,
# })
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options)
driver.set_window_size(1280, 720)
enable_download_in_headless_chrome(driver, DIR_NAME)
print URL
print "loading url"
driver.get(URL)
print "load end"
这篇关于硒以无头模式下载csv文件,它不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!