Selenium使用远程Web驱动程序下载文件

时间:2012-08-21 21:49:54

标签: python selenium selenium-webdriver

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

1 个答案:

答案 0 :(得分:0)

好吧,我没有办法让Chrome不将xml显示为页面而不是作为文件下载。似乎依赖于每How to download an XML without the browser opening it in another tab页面设计。

但是,我们可以设置远程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。注意:这只是开始下载,您可能需要添加逻辑以等待下载完成。