In den letzten 4 Monaten habe ich Automatisierungstests mit Selenium RC
durchgeführt.
Aber vor kurzem habe ich erfahren, dass Selenium RC veraltet ist. So viele Leute haben mir vorgeschlagen, zu Selenium Webdriver
zu wechseln.
Also, kann mir irgendjemand sagen, was das Problem mit Selenium RC ist und wie Webdriver besser ist als RC?
Danke.
Nun, es gibt mehrere Gründe. Hier sind einige in keiner bestimmten Reihenfolge
Webdriver bietet eine sauberere API als Selenium RC. Das häufigste Beispiel ist Selen.Type und Selen.TypeKeys, beide machen dasselbe. Webdriver bietet nur eine Methode sendKeys für alle typbezogenen Aktionen. Kurz gesagt, Webtreiber Klassen sind besser organisiert?
Selen funktioniert mit Javascript-Injektion. Wenn Sie mit Selen für einige Zeit gearbeitet haben, dann müssen Sie die gleichen Ursprungspolitikprobleme und -beschränkungen der Javascripteinspritzung beachten. Webdriver überwindet dies, indem er für jeden Browser einen Treiber verwendet. Für Firefox bedeutet dies, dass sich der Web-Treiber als Addon an den Browser anlehnt, für IE verwendet er Automations-Atome und für Chrome und Opera den Chrome-Treiber.
Aus dem oben genannten Grund sind Webdriver-Tests schneller als Selenium
Es ist viel einfacher, Webdriver im Vergleich zu Selen zu erweitern. Webdriver bietet erweiterbare Aktionsklassen, die Sie kombinieren und eigene benutzerdefinierte Aktionen erstellen können.
Webdriver kann Tests in mobilen Geräten wie iPhone, iPad und Android-Telefonen und Tablets unterstützen.
Zu guter Letzt gibt es im Selenprojekt keine Entwicklungsarbeit. Was auch immer verfügbar ist, wird weiterhin unterstützt, aber es gibt keine neuen Methoden oder Verbesserungen für Selen. Selenium und Webdriver-Projekte wurden vor einigen Jahren zusammengelegt und wurden zu Selenium 2.0
Weitere Informationen zum Webdriver hier und Grund für die Fusion hier
Was A.J. sagte.
Es gibt Einschränkungen bei RC, die nicht leicht zu überwinden sind.
Die Erweiterbarkeit ist ein großes Problem. Ich kann das nicht genug betonen. Als ich einige der RC-Methoden ausbaute, um mehr Arbeit zu leisten, die sie normalerweise taten, stieß ich auf eine Barriere, die nicht einfach zu überwinden war. Was in RC mit 750 Codezeilen und starker Verwendung des Befehlsmusters gemacht werden könnte, kann in WebDriver mit Just durchgeführt werden ein paar einfache Methoden.
Die gleichen Ursprungsrichtlinien . Es ist eine JavaScript-Sicherheitsrichtlinie, die es ermöglicht, den Code nur von der Domäne auszuführen, in der Sie sich befinden. Und da RC vollständig in Javascript geschrieben ist, können Sie nicht einfach zwischen Domänen wechseln oder mit einigen Websites arbeiten, die Frames mit Inhalten aus vielen Domänen umleiten oder verwenden.
Wegen einer anderen Sicherheitsrichtlinie in Javascript können Sie <input type='file' />
inputs nicht ausfüllen und müssen mehrere Workarounds verwenden.
Sie können nicht gut mit onload
Javascript modalen Dialogen arbeiten. Diese wiederum müssen umgangen werden.
Selen versucht, diese Dialoge vor Ihnen zu verbergen (indem er ersetzt window.alert, window.confirm und window.prompt), damit sie nicht aufhören Ausführung Ihrer Seite. Wenn ein Popup-Fenster angezeigt wird, ist dies der Fall wahrscheinlich, weil es beim Laden der Seite ausgelöst hat normalerweise zu früh, um die Seite zu schützen.
Sie können das Fenster in RC nicht wirklich maximieren:).
Sie müssen Ihre eigenen Methoden schreiben, wenn Sie auf ein Element warten müssen.
RC wird nicht mehr entwickelt, es wird nichts Neues geben. Es hat einige Zeit gedauert, bis WebDriver alle Features erkannt hatte, aber nun ist es an der Zeit, dass WebDriver endlich etwas mehr als RC (Warten und Maximieren) anbieten kann. Und es wird nur besser!
Die RCs getEval()
Methode ist ein armer Cousin von WebDriver executeJavascript()
. Ersteres gibt ein String
zurück und kann z. ein bestimmtes Seitenelement Letzterer kann direkt viele eingebaute Datenstrukturen zurückgeben, WebElements
, Lists
, und kann diese auch als Argumente verwenden! Das bedeutet, dass Sie ein Element mit WebDriver finden und dann JS darauf ausführen können. Mit RC müssten Sie das Element auch mit JS lokalisieren. Das kann gemacht werden, ist aber schwieriger und viel fehleranfälliger.
Das ist es meistens. Es gibt einen Grund, NICHT zu wechseln: Das WebDriver
API ist jung und verändert sich immer noch. Manchmal gibt es eine leichte Verhaltensänderung, wenn sie einen Fehler beheben. Deshalb ist es manchmal ein Schmerz in den Arsch zu aktualisieren und zu entdecken, dass es etwas kaputt gemacht hat.
Das heißt, ich würde nicht zurück zu RC gehen, da WebDriver so netter ist, mit zu arbeiten. Und ich freue mich nächstes Jahr sehr auf eine Zeit, in der WebDriver hoffentlich die nervigsten Kuriositäten haben wird.
Tags und Links selenium selenium-webdriver webdriver selenium-rc