2017-12-20 3 views
0

Ich benutze hauptsächlich ein Testframework mit Ruby, Capybara und SitePrism und bis jetzt benutzte ich erfolgreich die Methode 'attach_file (input_element, File.path)'.Wie kann man eine Datei mit Capybara/SitePrism/Ruby anhängen, wenn beim Laden der Seite kein Eingabeelement vorhanden ist?

Ich bin jetzt zu einem anderen Projekt gezogen und sie haben diese Seite, wo gibt es eine Schaltfläche "Upload", aber es gibt keine "Eingabe" Element in der Seite beim ersten Laden (Überprüfung des Quellcodes, es ist nicht versteckt Element entweder, dh "Eingabe" erscheint überhaupt nicht auf der Seite. Was passiert dann, wenn ein Benutzer auf die Schaltfläche "Hochladen" klickt, erscheint ein Pop-out-Fenster, in dem sie ihre Datei auswählen können und wenn sie diese auswählen, scheint etwas Javascript zu laufen (ich sah etwas damit zu tun) knockout.js, obwohl nicht 100% sicher, wenn das ist, was aufgerufen wird, und an diesem Punkt erstellt der Code ein völlig neues 'Eingabe' Element in der Seite, die ursprünglich nicht da war.

Wissen Sie, ob es eine Möglichkeit gibt, diese Reisen zu automatisieren? Oder hört sich das Thema bekannt an, um zu erforschen, was ich von meinem Ende an tun könnte?

Vielen Dank!

Antwort

0

Wenn es wirklich keine input Element auf der Seite (zweite Prüfung, weil es unwahrscheinlich ist, wenn knockout.js wird dafür verwendet wird), und es wird hinzugefügt, wenn die Verwendung der Upload-Taste über JS klickt dann gibt es keine „sauber "Möglichkeit, das mit Capybara zu testen. Der einzige Weg wäre, genau herauszufinden, wie JS aufgerufen wird, indem Sie die Taste drücken und execute_script aufrufen, um die JS-Methoden aufzurufen, die zum Erstellen des korrekten Elements input auf der Seite erforderlich sind.

+0

Danke Thomas. Ich habe geforscht, wie man diese 'execute_script' Methode benutzt. Jetzt mit den Entwicklern sprechen, weil ich die JS-Funktion nicht einfach direkt von der Konsole oder der Automatisierung aus aufrufen kann. Ich werde mit ihnen ins neue Jahr schauen müssen, da wir noch nicht sicher sind, wie das ausgelöst werden könnte. – mickael

Verwandte Themen