我正在使用chromedriver下载文件。没有无头参数,它可以正常工作。但是,当我尝试以无头方式进行相同操作时,出现以下错误:
every_downloads_chrome failed: Message: javascript error: downloads is not defined
(Session info: headless chrome=76.0.3809.87)
这是我用来下载文件的代码段:
def open(self) -> None:
# Enable verbose logging
service_args = ["--verbose", "--log-path={}/chromedriver.log".format(self.download_dir)]
self.browser = webdriver.Chrome(chrome_options=self.options, service_args=service_args)
self.browser.command_executor._commands["send_command"] = (
"POST", '/session/$sessionId/chromium/send_command')
params = {'cmd': 'Page.setDownloadBehavior',
'params': {'behavior': 'allow', 'downloadPath': self.download_dir}}
self.browser.execute("send_command", params)
self.browser.implicitly_wait(10)
这是我用来检查文件是否已下载的功能:
def every_downloads_chrome(self, driver):
if not driver.current_url.startswith("chrome://downloads"):
driver.get("chrome://downloads/")
return driver.execute_script("""
var items = downloads.Manager.get().items_;
if (items.every(e => e.state === "COMPLETE"))
return items.map(e => e.file_url);
""")
尝试下载文件:
driver.execute_script("__doPostBack('...','')")
time.sleep(10)
WebDriverWait(driver, 600, 30).until(self.every_downloads_chrome)
错误来自在every_downloads_chrome函数中的driver.execute_script调用。
有人知道吗?我还尝试删除了every_downloads_chrome_,只包含了一些time.sleep(120),但是文件没有被下载(如果有帮助,它们有〜10MB)。
谢谢!