2016-05-16 18 views
1

Also habe ich ein bisschen einen Haken getroffen. Ich versuche, einen Testfall zu automatisieren, wo ich mehrere Dateien an einen Eingabeknoten übergeben muss, und ich kann nicht herausfinden, wie das geht. Ich kann entweder Mechanize oder Watir verwenden, habe aber sehr wenig Informationen zu einem Thema gefunden, das in der Automatisierung relativ wichtig erscheint. In den Schnipsel unten benutze ich Watir mit Ruby. Das Hauptproblem, das ich habe, ist, dass es scheint, wenn mehrere Dateien ausgewählt sind, ist der Eingabeknoten nicht mehr sichtbar. Der Eingabeknoten akzeptiert mehrere Dateien, und das Übergeben eines einzelnen Pfads führt zu einem erfolgreichen Upload.Mehrere Dateien an den Eingangsknoten mit Watir übergeben (mit Ruby)

path1 = "/path/to/file.json" 
file_field.set path1 

Ich würde denken, dass durch eine Art Trennzeichen getrennt in einem String wäre so einfach in mehreren Dateien vorbei mit mehreren Pfaden wie vorbei. Ich bin mit Web Dev aber nicht besonders versiert und kämpfe darum zu begreifen, wo ich überhaupt anfangen sollte. Wenn ich wie so in mehrere Dateien zu übergeben versuchen:

multiple_paths = ("/path/to/file1.json"; "/path/to/file2.json") 
file_field.set multiple_paths 

es Uploads die zweite Datei gibt aber nicht die erste (macht mich zu denken, vielleicht ist es ihnen nacheinander hochladen, und das zweite ist das Überschreiben).

Denkst du, dass dies mit Watir überhaupt möglich ist? Ich weiß, dass Chrome eine Problemumgehung für das Hochladen mehrerer Dateien mit \ n als Trennzeichen bietet. Gibt es eine ähnliche Problemumgehung für Firefox?

+0

FWIW: sicher, sieht aus wie 'Filefield # set'expects einen einzelnen Pfad als Argument: https://github.com/watir/watir-webdriver/blob/master/lib/watir-webdriver/elements/file_field .rb – orde

+0

Es tut. Ich habe gerade die Chrome-Problemumgehung implementiert. Im Wesentlichen können Sie eine einzelne Zeichenfolge, die durch Pfade getrennt ist, übergeben und mehrere Dateien auf den Eingabeknoten laden. –

Antwort

1

Derzeit scheint es keine Problemumgehung für Firefox zu geben. Wenn jemand davon weiß, bitte posten Sie die Antwort, da ich nirgends eine Lösung finden konnte. Ich habe mir gedacht, dass ich die Lösung für Chrome hier posten würde, da die Ressourcen dafür knapp sind.

Wenn Sie für Upload von mehreren Dateien zu testen, haben diese bestimmte Instanz mit dem Chrome-Treiber laden:

@browser = Watir::Browser.new :chrome, :prefs => profile 

Dann ist es zu wollen, du gehst einen String zu übergeben, die etwa wie folgt aussieht:

paths = "path/to/first/file.json\npath/to/second/file.json\n...etc 
file_field.send_keys paths