python - 如何解决chrome headless无法下载文件的问题?

标签 python selenium

我已经使用多种配置设置了 webdriver,但仅在 headless 模式下仍然无法下载文件。

我尝试添加 POST 命令

chrome_options = webdriver.ChromeOptions()
prefs = {
    "download.default_directory": path,
    # "directory_upgrade": True,
    # "safebrowsing.enabled": False,
    "safebrowsing.disable_download_protection": True}
chrome_options.add_experimental_option("prefs", prefs)
if headless==True:
    chrome_options.add_argument('--headless')
# chrome_options.add_argument('log-level=2')
# chrome_options.add_argument('--disable-extensions')
# chrome_options.add_argument('--disable-gpu')
# chrome_options.add_argument('--no-sandbox')
local="/home/rittle/Workspace/portal_dl/chromedriver"
EC2="/home/ubuntu/portal_dl/chromedriver"
browser = webdriver.Chrome(executable_path=local,
    chrome_options=chrome_options,
)
browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': path}}
command_result = browser.execute("send_command", params)

我希望单击页面上的按钮后会有一个 .crdownload 文件,但我的/tmp/目录是空的,此代码无需 headless 即可正常工作

最佳答案

首先,看这个bug thread .

截至 4 天前...您需要的是添加 headless 的大小...

if headless==True:
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--window-size=1920,1080')

根据错误:

unknown error: DevToolsActivePort file doesn't exist

您可以添加 --disable-dev-shm-usage 作为参数:

 chrome_options.add_argument('--disable-dev-shm-usage')

参见@DebanjanB answer .

希望这对您有帮助!

关于python - 如何解决chrome headless无法下载文件的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54398950/

相关文章:

python - prime_factorize(1) -> ? (Python 错误信号)

python - 当网络x中节点度数为n时合并边

java - 从示例中找不到 Selenium 类名

java - junit 数据驱动测试指定何时提供新数据

Python Selenium 获取具有相同文本的所有链接的列表

java - 如何在 Selenium WebDriver 中使用 Java 单击标签名称 <a class </a> 的链接

python - 如何同时使用字典和数组的 for 循环

python - 蛇与梯子,检查是否会降落在最后一个方 block 上

python - 让 PyC​​harm 知道哪些类是 mixin 的

python - 带 Selenium 的 headless (headless) Chrome ,只能找到滚动非 headless (headless)的方法