【问题标题】:Handling "Download" window by Firefox WebDriverFirefox WebDriver 处理“下载”窗口
【发布时间】:2011-05-22 18:15:49
【问题描述】:

我正在试验 Firefox 的 WebDriver,我想问一下是否可以处理“下载”窗口(接受或拒绝传入的下载请求)?

比如一段简单的代码:

import selenium.firefox.webdriver

dr = selenium.firefox.webdriver.WebDriver()
# Firefox is showed up.

# Let's say I'd want to download python.
dr.get('http://python.org/ftp/python/3.1.3/python-3.1.3.msi')
# Download window is showed up.
# How could I accept the download request?

# As I understand, the method below should return 
# two handles but I get only main window's handle. 
handles = dr.get_window_handles()

# Seems like WebDriver cannot "see" this popup.

我已经对此进行了一些试验,但还没有找到解决方案。我真的很感激任何提示。

非常感谢, - V

【问题讨论】:

    标签: python automation selenium webdriver


    【解决方案1】:

    我在尝试使用 capybara 下载文件时遇到了这个问题 并被下载提示停止

    SeleniumHQ : Selenium WebDriver

    profile = Selenium::WebDriver::Firefox::Profile.new
    profile['browser.download.dir'] = "/Downloads"
    profile['browser.download.folderList'] = 2
    profile['browser.helperApps.neverAsk.saveToDisk'] = "audio/wav"
    driver = Selenium::WebDriver.for :firefox, :profile => profile
    driver.navigate.to('http://www.address.com/file.wav')
    

    这只是将文件下载到指定的目录,没有提示:)

    我遇到的另一个选项是

    Determining file MIME types to autosave using Firefox & Watir-WebDriver

    我之前尝试过watir,它被证明非常有用

    【讨论】:

      【解决方案2】:

      对此的一种解决方案是更改 WebDriver 的 Firefox 配置文件以自动将某些 MIME 类型下载到给定目录。

      我不确定这在 Python 中是如何(或是否)公开的,但在 Selenium wiki 上的 Ruby bindings page 中(在“调整 Firefox 首选项”下)中提到了它。

      【讨论】:

      • 是否可以公平地假设调整 FF 偏好的能力完全超出了 webdriver 的能力,完全用 ruby​​ 编写的东西?我想为 thje PHP 绑定做一些类似的事情,并且很好奇它是如何完成的。
      【解决方案3】:

      我不认为 WebDriver 就是为这种事情而构建的,但我会尝试一下。 Firefox WebDriver 没有内置任何东西来处理这种特定情况,但您可以采取一些方法。

      您可以使用 WebDriver 脚本使用的配置文件打开 FF,并编辑首选项以始终保存文件而不是询问(选项 > 应用程序 > Windows 安装程序包 - 设置为“保存文件”)。但是,现在无法判断文件是从浏览器下载的,除非您被重定向到 404 页面。如果没有,您可以检查该文件是否存在于同一配置文件的下载目录中(选项 > 主要 > Donwloads)。如果仍在下载过程中,则文件名将为 WhatFileName.ext.part

      您的另一个选择是使用非可视 HTMLUnit 驱动程序,导航到下载链接,单击它,然后获取页面源(将是文件的内容)。这适用于文本文件,我不能保证它对二进制文件同样适用,我也不知道在这种情况下它将如何编码。

      祝你好运

      【讨论】:

        猜你喜欢
        • 2016-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-27
        • 2017-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多