2016-07-26 17 views
3

Mein System:Probleme eine Datei in Watir mit file_field Hochladen

Windows-10 Pro 64-Bit-

Rubin 2.1.9p490 (2016.03.30 Revision 54437) [x64-mingw32]

FireFox 47.0.1

, hier zu starten ist der Code, den ich mit zu tun habe:

Hier

ist mein watir Testcode: identifizieren und bestätigen Datei gültig ist

local_file = '/Users/tom.feodoroff/Desktop/Charlie_Snoopy.jpg' 

File.exists? local_file 

raise "error" unless File.exists? local_file 

Ändern Sie den Stil-Display, damit ich mit Steuerung in Wechselwirkung treten kann

element = BROWSER.input(:type => 'file') 

puts element.attribute_value('style') #display: none; 

script = "return arguments[0].style = 'display: inline'" 

BROWSER.execute_script(script, element) 

puts element.attribute_value('style') #display: inline; 

Verwenden Syntax vorgeschlagen Datei Anwendung hinzufügen

BROWSER.file_field(:type => 'file').set(local_file) 

Dies erzeugt keine Fehler, aber es hängt die Datei auch nicht an, sodass meine Submit-Schaltfläche aktiv wird. Benötige ich eine andere Version von Ruby (Watir), um diese Arbeit zu erledigen oder gibt es etwas, das mir fehlt?

+0

Versuchen Sie, den Laufwerksbuchstaben in 'local_file' anzugeben (z. B. C :) – orde

+1

Der Code, der die Submit-Schaltfläche aktiviert, wird möglicherweise nicht auf Änderungen im Dateifeld warten. Die Schaltfläche wird wahrscheinlich in dem Code aktiviert, der die abgelegte Datei verarbeitet. In diesem Fall müssten Sie diese ebenfalls finden und manuell auslösen. –

+0

Danke @Orde, ich habe das Laufwerk zum Dateinamen hinzugefügt: irb (main): 001: 0> local_file = 'C: /Users/tom.feodoroff/Desktop/Charlie_Snoopy.jpg' => "C:/Benutzer /tom.feodoroff/Desktop/Charlie_Snoopy.jpg " irb (main): 002: 0> Datei.exists? local_file => true aber das hat mein Problem nicht gelöst :( –

Antwort

1

Ich verstehe nicht warum, aber ich habe Schlaf (5) kurz vor dem Absenden der Schaltfläche hinzugefügt, und jetzt funktioniert es. Mein Dateisymbol erscheint nun auf der Seite und die Schaltfläche zum Senden ist aktiv und hat das Formular erfolgreich gesendet. Dinge, die dich "hmmmm" gehen lassen :) Danke für die Antworten. Hoffentlich hilft das jemand anderem mit diesem Problem?

+3

Sie sollten wahrscheinlich eine Wartezeit anstelle von verwenden a "sleep" Angenommen, Sie befinden sich auf Watir-Webdriver 0.9.1 oder höher, können Sie 'when_enabled' verwenden - z. B.' submit_button.when_enabled.click'. –