Warum verwenden wir WebDriver anstelle von Selenium IDE?
Warum können wir nicht einfach aufzeichnen alle unsere Testfälle in Selenium IDEexportieren Sie es in Java/WebDriver und führen Sie es in WebDriver mit Eclipse?
Ich brauche eine genaue Erklärung wie ich bin sehr verwirrt in die Verwendung von WebDriver!
Und kann bitte jemand erklären, warum IDE aufgezeichneten Skripts fehlschlagen in WebDriver?
InformationsquelleAutor der Frage Sagar | 2013-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Große Frage, und hier ist die Antwort:
Selenium IDE ist ein Aufnahme-und Wiedergabe-tool, das sehr einfach zu bedienen, aber es ist sehr unzuverlässig. Aufnahme und Wiedergabe ist in der Regel eine sehr verpönt und in web-Anwendungen. Da web-Anwendungen Häufig geändert, die IDE ist nicht die ideale Lösung für eine Produktionsumgebung, weil der Wartungs-Alptraum, die entstehen können.
Lassen Sie mich Ihnen ein Beispiel aus der Praxis. Nehmen Sie Ihre test-und finden Sie ein element mit einem dynamischen ID. Sicher, wir können in eclipse importieren, aber was passiert, wenn, die test ausfallen auf der Straße? warum nicht einfach testen, Agil und unabhängig zu fangen, diese in den ersten Platz.
Es auch darauf an, Ihre Prinzipien von test-Automatisierung. Test-Automatisierung ist MEINER Meinung nach (und einige andere Profis) glauben, dass der test-Automatisierung werden sollte, näherte sich aus einer Programmier-Perspektive. Programmierer schreiben tests und Wartung der tests. Idealerweise in der Qualitätssicherung-Personal sollte geschult werden, um schreiben und verwalten von eigenen Prüfungen und versuchen.
Also wieder, zurück zu deiner Frage, die IDE ist entworfen, um eine schnelle Lösung für die Automatisierung, NICHT eine Lösung für eine komplette regression-suite.
Ich habe nicht verwendet die IDE in eine Weile, aber der Grund, warum Sie scheitern, ist, weil die Skripte, die exportiert werden, sind einfach die Schrittenicht eine ganze java-Datei. Auch dies ist, weil Selenium IDE exportieren werden sollen, Agnostiker, wenn es um, wie Sie Ihre test. Sagen, ich bin ein Benutzer von jUnit.. was ist, wenn Selenium IDE exportiert es, um TestNG die ganze Zeit? Das wäre nicht fair.. ehrlich gesagt würde ich lieber meine eigenen tests als ändern, dass eine Zeile, jedes einzelne mal, wenn ich meine test-Datei.
Können Sie Lesen Sie den vollständigen text der Forschung, genannt Warum Record/Replay-Tests
von Web-Anwendungen zu Brechen?
InformationsquelleAutor der Antwort sircapsalot
Du kann tatsächlich tun dies mit der Selenium IDE ist ganz einfach. Zeichnen Sie Ihre test case /test suite in Selenium IDE exportieren "Java /JUnit 4 /Webdriver".java-Datei. Dies erzeugt einen JUnit-test, können Sie Sie importieren und ausführen von Eclipse (mit der korrekten version von JUnit natürlich).
Es ist nicht 100% zuverlässig, und Sie müssen möglicherweise einige manuelle änderungen/Korrekturen, aber im Allgemeinen funktioniert es Recht gut. Beginnen Sie mit einer einzigen kleinen testcase und von dort aus arbeiten.
InformationsquelleAutor der Antwort Marielle
Warum nicht einfach ein Eintrag in der IDE und spielen Sie die Aufnahme mit WebDriver???
Die IDE Nicht Wissen, Was zu Warten
Angenommen Bob ist die Durchführung von manuellen Kontrollen und den Aufnahmen zu seinem zusammenspiel mit Selenium IDE. Er führt eine operation, die dauert eine Weile, ein update des GUI, und wenn die operation beendet hat, klickt er eine Schaltfläche. Bob weiß, dass die GUI aktualisieren abgeschlossen, weil ein spinner das war zu zeigen, wenn die operation begonnen wird entfernt, wenn der Vorgang beendet ist. Wie ist die IDE wechseln zu erfassen, die Tatsache, dass der Vorgang beendet haben muss, bevor Sie auf den button? (Hinweis: hier ist dies nicht ein Fall, wo der Knopf ist deaktiviertbis der Vorgang abgeschlossen ist.) Dies ist nicht eine hypothetische: wenn Sie einen test dynamische Tabellen (wie diese verwaltet von DataTables), den der Benutzer ändern kann alles zu jeder Zeit.
Dies kann einer der Gründe, die eine Sequenz von Befehlen erstellt, die mit der IDE würde fehlschlagen mit WebDriver. Es funktioniert einfach nicht wissen, was zu warten.
Ist es möglich, fügen Sie wartet, manuell in der IDE, aber wenn Sie dies tun, dann sind Sie nicht mehr "nur record[ing] alle unsere test-Fällen". Und was Sie tun, wird mehr wie das schreiben von code für WebDriver.
Benutzer sind Ineffizient
Nicht lange her, da war ein Selen-die Frage, in welcher der Benutzer wollte Selen, klicken Sie auf den letzten Datensatz in einer Tabelle, die mehrere Seiten von Datensätzen. Die Frage war also, wie kann ich die Seite durch den Tisch, den ganzen Weg nach unten zu der letzten Seite und klicken Sie dann auf den letzten Datensatz? Jemanden (vielleicht mich, vielleicht jemand anderes) darauf hingewiesen, dass, wenn die Tabelle sortierbar ist, könnte es in umgekehrter Reihenfolge sortiert und dann der Selen-code könnte dann auf den ersten Datensatz. Das sind 2 Vorgänge eher als
p+1
Operationen: klickenp
Zeiten, wop
ist die Anzahl der Seiten, plus 1-mal für das klicken auf die record.Wenn wir code schreiben, der für WebDriver, haben wir die Gelegenheit, zum schreiben der tests zu vermeiden, nehmen Sie die landschaftlich schöne Strecke, um die Ergebnisse, die wir wollen. Siehe den nächsten Punkt für die technischen details, warum es darauf ankommt.
Selen Operationen Können Teuer Werden
Wenn die software läuft Ihre Selenium-Befehle lokal ist, und die Ihr browser lokal ist, können Sie nicht fühlen, dass Selen Operationen können teuer sein, aber wenn Sie führen Sie Ihre Befehle auf einer Maschine und in die browser-remote ist, dann werden Sie feststellen, eine deutliche Verlangsamung. Zum Beispiel, wenn Sie laichen Sie Ihren browser in der Sauce Labs-VM oder in einem BrowserStack VM zum ausführen einer test-suite, Netzwerk-Verzögerungen gehen zu einem erheblichen Zeit, wie lange es dauert, um die suite zu vervollständigen. Für eine komplette Anwendung, test-suite, kann dies bedeuten, viele Minuten mehr.
Die IDE erzeugt eine Sequenz von Befehlen, müssen jeweils in einem round-trip zwischen den Selen-script und die browser. Jeder round-trip hinzu. Angenommen, ich möchte, um zu überprüfen, dass zwei Elemente enthalten den gleichen text. Ich werde nicht zu verwenden Selenese, weil ich nicht in der Regel verwenden Sie die IDE aber mit WebDriver-code in Python, das Skript könnte sein:
Dieser code erfordert 4 round-trips: ein round-trip pro
find_element...
- und einen pro-Zugang zu dentext
Feld. Der gleiche test geschrieben werden konnte:Dieser braucht nur einen round-trip. Wenn Sie die IDE verwenden, um Aktionen aufzeichnen, die Reihenfolge der Befehle ist wie die früheren snippet: viele round-trips. Wenn Sie schreiben Sie Ihren code für WebDriver, haben Sie die Möglichkeit zu optimieren, wie Sie code.
Bedeutet dies nicht, dass die Selenium IDE hat keine Verwendung, aber ich würde nie denken, nur Aufnahme-tests mit ihm und dann spielen Sie diese Aufnahmen mit WebDriver.
InformationsquelleAutor der Antwort Louis
Wenn Sie ein Neulingdie Sie tatsächlich nutzen können 80% Ihrer IDE-Skript als JAVA webdriver Skript, u muss nur etwas improvisieren, um Ihre exportierten IDE-script und es funktioniert gut.
Aber wenn Sie anfangen, testen von komplexen Funktionalitäten, die Sie haben, zu lernen, einige der grundlegenden java-Methoden, um es herauszufinden!
InformationsquelleAutor der Antwort user2959294
webdriver können Sie führen Sie Ihre test-cases Aufnahme mit Selenium IDE in einem Selenium-server oder über den RC auf mehreren Servern. Dieses enthält Optionen zur Integration mit Selen-aktiviert-Anbieter (siehe link unten).
Zum Beispiel, wenn Sie erfasst haben, Ihr Testfall in der IDE, Sie könnte es problemlos mit Ihrem eigenen selenium-server oder von einem provider wie Saucelabs zu behandeln, das ausführen von Testfällen im Firefox unter Ubuntu, Safari auf OSX und IE10 auf Windows 8. Wie bei jedem test der Fall ist, können Sie es von Ihrer IDE (Eclipse /IDEE /etc ) Ihr generator (maven /gradle /), und /oder über ein CI-system.
Check-out https://saucelabs.com/selenium für einige Beispiele. Wir haben auch unsere selenium Testfälle für Last-Tests mit Soasta - WebDriver ermöglicht eine einfache IDE-tests werden in vielen verschiedenen zusammenhängen verwendet.
InformationsquelleAutor der Antwort Brett
Weil, wenn die Komplexität des Codes zu erhöhen, wird es schwierig für Sie zu verwalten, es mit IDE. Die Wartung des Skripts wird schwierig sein, mit dem IDE.
Exportieren von Testfällen aus IDE, webdriver ist nicht 100% zuverlässig.
InformationsquelleAutor der Antwort Ankit
Ich bitte zu unterscheiden. Ich sehe keinen Grund, dass zu erhalten extra-code, wenn eine einfache Aufnahme-und Wiedergabe erreichen kann, die gleichen Ergebnisse in einem Bruchteil der Zeit.
Bin ich einverstanden mit der impl der aufgezeichneten Skript muss Agil sein. Es kann nicht nur so einfach wie die build-in-Kommandos und machen es wendig und auch inplement Ihre eigenen Makros (aka Befehle/Aliase), spezifisch für die Anwendung unter test.
Immer noch, wenn konsequent umgesetzt und mit Hilfe von wenigen Selenium IDE-plugins wie fließen Steuern, wird es ein Kinderspiel zu halten, wie Komplex der test passt und Sie spielte wieder über die HTML-Läufer. Ich habe Selenium IDE HTML-Skripts, um vollständig zu decken, komplexe Seiten und wiederverwendet das gleiche script für alle responsive Modi der app.
Wartung ist einfach, da die IDE wird Ihnen helfen schnell anpassen, ein failed cmd und AJAX wartet kann leicht berücksichtigt werden, für richtig, durch das warten der DOM-Inhalte zu ändern auf der Seite. Ich bin noch nicht überzeugt von diesem AJAX-Entschuldigung für die Abberufung von Selenium IDE.
Für eine Maven-integration des flow controls Befehl/alias/Makros verwendet, die von Selenium IDE und Maven - SureFire-test-plugin, siehe:
https://github.com/paulbors/sideflow
Fühlen Sie sich frei, es zu benutzen in Ihrem Produkt und zu verbessern, wie gebraucht.
InformationsquelleAutor der Antwort Paul Bors
Andere Leute gesagt haben, viele hilfreiche Antworten. Eine Sache, die fehlt, ist, dass, wenn Sie code schreiben, statt über die IDE Sie haben die macht, änderungen an der Datenbank. Es hängt von der website, die Sie testen, wie nützlich das ist, aber hier sind einige nützliche Beispiele, die ich erlebt habe. In einem Fall war die website bereits mehrere Abschnitte einer Klasse. Einer unserer tests war die Zusammenführung dieser Bereiche in einem. Die IDE war dies nicht möglich. Aber mit webdriver wir können hinzufügen, alle unsere test-Daten in der Datenbank, führen Sie den Seriendruck, und entfernen Sie dann die Daten aus der Datenbank.
Ist ein weiterer Vorteil, webdriver hat, ist Selenium Grid. Mit Grid können Sie führen Sie Ihre tests parallel in mehreren Browsern. Dies macht die Tests laufen schneller und Sie können mehr gründlich testen Sie den code.
InformationsquelleAutor der Antwort Alex Cook