selenium headless模式下 文件下载失败


问题描述:

  代码在普通模式下能够下载到文件,但是headless模式打开后就出现文件下载失败情况,也没有报错信息。

解决方法:

示例代码

#!/usr/bin/python
# _*_ coding:utf-8 _*_
# Author:xiaoshubiao
# Time : 2018/8/14 14:57
import time
from selenium.webdriver import Chrome
from selenium import webdriver
download_location = 'C:\\Users\\Administrator\\Downloads'
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory': download_location,
         'download.prompt_for_download': False,
         'download.directory_upgrade': True,
         'safebrowsing.enabled': False,
         'safebrowsing.disable_download_protection': True}

chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument("--headless")
driver = Chrome(chrome_options=chrome_options)
driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')

params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_location}}
command_result = driver.execute("send_command", params)
print("response from browser:")
for key in command_result:
    print("result:" + key + ":" + str(command_result[key]))

# 这里是随便选了一个可以下载的连接,无心骚扰。
driver.get("http://www.yundama.com/apidoc/YDM_SDK.html")
clone_box = driver.find_element_by_xpath('/html/body/div[4]/div[2]/div/p[11]/a')
clone_box.click()
time.sleep(10)
driver.quit()

需要注意的有两点:

1、你的chrome浏览器要60以上。

2、注意下载路径,wins下必须是 \  而不是 /


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM