0

我正在使用 python 和 selenium 中的远程 Web 驱动程序来尝试从 Google Mini 生成和下载报告(xml 文件)。我生成文件很好,并且能够选择导出链接。但是有没有一种简单的方法可以指示远程 webdriver 将该链接下载到文件中?

4

1 回答 1

0

好吧,我没有找到让 Chrome 不将 xml 显示为页面而不是下载为文件的方法。似乎取决于如何下载 XML 而无需浏览器在另一个选项卡中打开它的页面设计。

但是,我们可以为远程 Web 驱动程序设置首选项。Remote() 包含一个 desired_capabilities 参数,可以传递与文件下载相关的首选项:options.to_capabilities()

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0,
             'download.default_directory': download_path}
options.add_experimental_option('prefs', prefs)
pprint(options.to_capabilities())
driver = webdriver.Remote(command_executor='http://camutil_selenium_1:4444/wd/hub',
                                   desired_capabilities=options.to_capabilities())

上面的 pprint 输出:

{'browserName': 'chrome',
'chromeOptions': {'args': [],
               'extensions': [],
               'prefs': {'download.default_directory': '/some/path/',
                         'profile.default_content_settings.popups': 0}},
'javascriptEnabled': True,
'platform': 'ANY',
'version': ''}

现在,您可以使用 driver.get(dl_url) 开始下载 Chrome 未显示扩展名的文件,该文件将保存到 download_path。注意:这只会开始下载,您可能需要添加逻辑以等待下载完成。

于 2017-02-28T18:34:06.330 回答