gpt4 book ai didi

python - Selenium 不会下载传递给 Chrome 驱动程序的选项

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:31 25 4
gpt4 key购买 nike

我想下载一个文件,我可以使用下面的代码来完成。当我将选项传递给驱动程序时,下载不会开始。

from selenium import webdriver
url = "http://wwwapps.tc.gc.ca/Saf-Sec-Sur/2/CCARCS-RIACC/DDZip.aspx"
driver.get(url)
driver.find_element_by_id("btnDownload").click()

我尝试传递以下选项,但下载未开始:

from selenium import webdriver
url = "http://wwwapps.tc.gc.ca/Saf-Sec-Sur/2/CCARCS-RIACC/DDZip.aspx"
options = webdriver.ChromeOptions()
options.add_argument("download.default_directory=H:/")
options.add_argument('headless')
options.add_argument('window-size=1920x1080')
options.add_argument("disable-gpu")
with webdriver.Chrome(chrome_options=options) as driver:
driver.get(url)
driver.find_element_by_id("btnDownload").click()

我也尝试过:

from selenium import webdriver
url = "http://wwwapps.tc.gc.ca/Saf-Sec-Sur/2/CCARCS-RIACC/DDZip.aspx"
with webdriver.Chrome() as driver:
prefs = {
"download.default_directory": down_dir,
"download.prompt_for_download": False,
"download.directory_upgrade": True
}

options.add_experimental_option('prefs', prefs)
driver.get(url)
driver.find_element_by_id("btnDownload").click()

我想下载隐藏浏览器窗口的文件。另外,有没有办法在成功下载后立即关闭它(使用driver.quit())?

编辑:

我删除了重复的驱动程序实例 - 我在复制代码段时犯的错误。

最佳答案

您实例化您的网络驱动程序两次,删除/注释掉另一行:

with webdriver.Chrome(options=options) as driver:
# driver = webdriver.Chrome(options=options)

也不确定选项类,我相信你应该导入它:

from selenium.webdriver.chrome.options import Options

编辑:是的,Chrome 不会以 headless 模式下载:SO answer .

所以,适合您的解决方案是:

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()

关于python - Selenium 不会下载传递给 Chrome 驱动程序的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56778991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com