当前位置: 首页 > 知识库问答 >
问题:

用铬无头和硒下载

司马建柏
2023-03-14
# 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)

如何让下载以无头模式启动?

共有1个答案

危宜
2023-03-14

是的,这是一个“功能”,为了安全。如前所述,这里是bug讨论:https://bugs.chromium.org/p/chromium/issues/detail?id=696481

chrome版本62.0.3196.0或更高版本中增加了支持,以支持下载。

下面是一个python实现。我不得不将该命令添加到chromedriver命令中。我会尝试提交一个公关,所以它是包括在图书馆在未来。

def enable_download_in_headless_chrome(self, 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)
 类似资料:
  • 我在我的Ruby on Rails(5.2.1)项目中使用chrome headless with Selenium(3.14.0)和Capybara(3.8.0),我有一个测试,它可以在无头chrome中工作,但不能在无头chrome中工作。我在谷歌chrome稳定版69上使用的是“--无头”标志。 我已经用下面的设置了我的无头chrome,这适用于所有不下载文件的测试。

  • 问题内容: 我正在使用python-selenium和Chrome 59,并尝试自动执行简单的下载序列。当我正常启动浏览器时,下载有效,但是当我以无头模式运行时,下载不起作用。 我什至尝试添加默认路径: 在常规实现中,添加默认路径是可行的,但是无头版本仍然存在相同的问题。 如何使下载以无头模式开始? 问题答案: 是的,这是安全的“功能”。如前所述,这里是Bug讨论:https : //bugs.c

  • 我使用Selenium和PhantomJS开发了几个Python脚本。当我转向自动下载时,我切换到了(headed)Firefox(有效),然后是Chrome,有了headless选项,这样浏览器就不会在我面前打开了。 我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美地工作。 第二个,然而,工作与头铬。如果我加上“无头”选项,它就不再起作用了。当我试图以headless模式打印

  • headless Chrome可以通过MacOS上的Selenium Webdriver使用自签名证书吗? 我试图让Rails系统测试由SSL上的headless Chrome驱动。 测试设置 样品测试 页面内容: MacOS 10.13.6 Rails 5.2.1 Ruby 2.4.1 (gem)3.5.1 (gem)3.14.0 (gem)2.34 铬68.0.3440.106。也尝试过 谷歌

  • 我在过去的一周里一直在处理这个问题,脑子里想不起来,所以我决定寻求帮助。我正在尝试使用Chromium 86构建在AWS Lambda中运行Selenium。我不断收到的错误消息如下: 以下是我的版本: 这是我的代码: 到目前为止我已经尝试过的事情: 尝试了各种运行时Python 3.6、3.7、3.8,但没有成功 尝试使用和不使用Lambda层。尝试使用Lambda逐层文件夹结构时相对简单: C