2009-04-01 9 views
1

Wie kann ich in einem Ruby Selenium-Automatisierungsskript eine Datei aus einem Dateisuchdialog auswählen (d. H. Eine Datei von meinem PC hochladen)?Feld durchsuchen

+0

Bitte präzisieren Sie – belgariontheking

+0

Ja, ich habe keine Ahnung, was Sie fragen. Möchten Sie ein clientseitiges Skript ausführen, um eine Datei für ein Dateieingabefeld in einem HTML-Formular auszuwählen? Versuchen Sie etwas über HTTP ohne Benutzereingaben hochzuladen? – Welbog

+0

Aprilscherze! * drückt den cornify Knopf mehrmals * – TheTXI

Antwort

2

Ich glaube, ich habe dieses Problem schon einmal erlebt.

Wenn Sie Selen Skripte in Ruby schreiben, können Sie alle Fenster des Browsers steuern. Aber der Dateiauswahldialog und der Dateidownloaddialog sind eigentlich Systemfenster, so dass Sie sie nicht über Selen steuern können.

Sie können sie jedoch über das Juwel Win32OLE für Tests unter Windows steuern. Aber natürlich können Sie diese Tests nicht auf Macs oder Linux ausführen.

Wie Selen im Allgemeinen ist es eine Art Hacky. Aber hier ist, wie es funktioniert:

require 'selenium' 
require 'test/unit' 
require 'win32ole' 

class DownloadFileTest < Test::Unit::TestCase 
    def setup() 
    @wsh = WIN32OLE.new('Wscript.Shell') 
    end 
    def teardown 
    WIN32OLE.ole_free(@wsh) # yes, this is required *rolls eyes* 
    end 
    def test_download_file 
    # ...stuff that causes a download window to pop up... 
    @wsh.AppActivate("Opening") 
    sleep(2) 
    @wsh.SendKeys("{RIGHT}{ENTER}") # Hits ok button - file downloads 
    sleep(3) 
    # Use regular Ruby File methods to assert stuff on the file content 
    end 
0

ich alle OLE Sachen überspringen würde und geben Sie einfach den Pfad in das Gebiet :)

Sie dies tun können, solange Sie Selenium RC laufen mit einem der privilegierten Modi. Diese werden standardmäßig verwendet, wenn Sie auf der neuesten 1.0 Beta 2 sind.