Вы дважды создаете экземпляр своего веб-драйвера, удаляете / комментируете другую строку:
with webdriver.Chrome(options=options) as driver:
# driver = webdriver.Chrome(options=options)
Также не уверены в классе Options, я думаю, что вы должны импортировать его с помощью:
from selenium.webdriver.chrome.options import Options
РЕДАКТИРОВАТЬ: да, Chrome не собирается загружать в режиме без головы: SO ответ .
Итак, решение для вас:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
url = "http://wwwapps.tc.gc.ca/Saf-Sec-Sur/2/CCARCS-RIACC/DDZip.aspx"
def enable_download_in_headless_chrome(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}}
driver.execute("send_command", params)
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
enable_download_in_headless_chrome(driver, "H:/")
driver.get(url)
driver.find_element_by_id("btnDownload").click()