【发布时间】:2018-01-19 18:22:34
【问题描述】:
我正在使用 python-selenium 和 Chrome 59 并尝试自动化一个简单的下载序列。当我正常启动浏览器时,可以下载,但是当我在无头模式下这样做时,下载不起作用。
# Headless implementation
from selenium import webdriver
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument("headless")
driver = webdriver.Chrome(chrome_options=chromeOptions)
driver.get('https://www.mockaroo.com/')
driver.find_element_by_id('download').click()
# ^^^ Download doesn't start
# Normal Mode
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.mockaroo.com/')
driver.find_element_by_id('download').click()
# ^^^ Download works normally
我什至尝试过添加默认路径:
prefs = {"download.default_directory" : "/Users/Chetan/Desktop/"}
chromeOptions.add_argument("headless")
chromeOptions.add_experimental_option("prefs",prefs)
添加默认路径在正常实现中有效,但同样的问题在无头版本中仍然存在。
如何让下载以无头模式开始?
【问题讨论】:
-
我也尝试过使用
submit并发送Keys.ENTER。它适用于普通浏览器,但不适用于无头浏览器。 -
您希望仅使用 chrome 来完成吗?或者 Firefox 也可以?
-
首选 chrome 或 phantomjs
-
为什么不直接使用 urllib 来下载文件呢?单击文件以模拟下载仅适用于某些用户案例。我使用过在开始下载之前会打开“另存为”窗口的浏览器。如果您单击以查看它是否存在于服务器上,或者要验证文件的内容,那么 urllib 可能是您最好的选择。
-
@TehTris 问题是,我在另一个需要我之前登录的站点上执行此操作。这设置了标头和 cookie,所以我需要在使用之前设置它们。但是只使用js,似乎没有办法从客户端获取请求头......所以我不能使用urllib
标签: python google-chrome selenium google-chrome-headless