【发布时间】:2020-07-16 21:05:09
【问题描述】:
我无法在 Python 中以无头模式使用 Selenium Chrome 下载文件。我在这里检查了一些答案,其中大多数是相同的。他们谈论添加首选项和实验选项。
Selenium Webdriver: How to Download a PDF File with Python?
Downloading a PDF using Selenium, Chrome and Python
Downloading with chrome headless and selenium
这些都没有帮助,我开始怀疑这是否与我的环境有关。
Ubuntu:20.04
Python:3.8.2
Chrome 浏览器: 铬 80.0.3987.162 快照
Cromium 驱动程序: ChromeDriver 80.0.3987.162 (f2c5dd6138153bb0658091205bd1a1717f16081a-refs/branch-heads/3987@{#1034})
这是一段基本的示例代码,它不起作用。它完成时没有任何错误,但文件永远不会下载。
#!/usr/bin/env python3
import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
IMG_DIR = '/images/'
if not os.path.exists(IMG_DIR):
os.makedirs(IMG_DIR)
options = Options()
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-setuid-sandbox")
options.add_argument("--window-size=1920,1080")
prefs = {"download.default_directory" : IMG_DIR}
options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(options=options, executable_path='chromedriver')
driver.get('https://www.thinkbroadband.com/download')
#Find the Extra Small file on port 80
download_button = driver.find_element_by_xpath('//*[@id="main-col"]/div/div/div[8]/p[2]/a[1]')
driver.execute_script("arguments[0].scrollIntoView();", download_button)
download_button.click()
time.sleep(10)
driver.save_screenshot('{}page.png'.format(IMG_DIR))
driver.get('chrome://downloads')
time.sleep(10)
driver.switch_to.window(driver.window_handles[-1])
driver.save_screenshot('{}downloads.png'.format(IMG_DIR))
driver.close()
driver.quit()
我附上了两张截图,但下载页面总是显示为空白页。
测试文件下载地址:
Chrome 下载页面:
请帮忙!
更新:我已经删除了 chrome 的 snap 版本,它似乎工作得更好。我可以将文件下载到自定义目录。一定是 snap 版本的 bug。
【问题讨论】:
标签: python selenium google-chrome selenium-webdriver