2010-12-09 124 views
2

我正在嘗試使用Firefox的WebDriver,並且想詢問是否可以處理「下載」窗口(接受或拒絕傳入的下載請求)?通過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

回答

5

一個解決這個正在改變的webdriver的Firefox配置文件自動下載一些MIME類型給定的目錄。

我不確定這是如何(或如果)在Python中公開,但它在Selenium wiki上的Ruby bindings page上提到(在「調整Firefox偏好設置」下)。

+0

是公平的假設,來調整FF喜好的能力完全不在的webdriver的ablities的,完全的東西在紅寶石寫的?我想爲PHP綁定做類似的事情,並對如何完成它感到好奇。 – tipu 2012-03-02 19:19:50

3

我不認爲這是哪門子的那webdriver的是爲建的事情,但我會在它需要一個裂縫。 Firefox WebDriver沒有內置任何內容來處理這種特定情況,但您可以採取一些方法。

您可以使用WebDriver腳本使用的配置文件打開FF,並編輯首選項以始終保存文件而不是詢問(選項>應用程序> Windows安裝程序包 - 設置爲「保存文件」)。但是,現在,除非您重定向到404頁面,否則無法確定該文件是否從瀏覽器下載。如果沒有,您可以檢查該文件是否存在於相同配置文件的下載目錄中(選項>主>下載)。如果它仍在下載過程中,文件名將爲WhateverFileName.ext.part

您的其他選擇是使用非可視化的HTMLUnit驅動程序,導航到下載鏈接,單擊它並獲取頁面源代碼(將是文件的內容)。這適用於文本文件,我不能保證它對於二進制文件的工作類似,也不知道在這種情況下它將如何編碼。

最好的運氣

3

我遇到了這個當我嘗試使用水豚 下載文件,並得到了由下載提示

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它被證明是非常有用的

相關問題