Mit Selenium WebDriver 2.0 in der Praxis
Möchte ich schreiben Selenium Testfälle in JUnit und Teste meine Projekte in verschiedenen Browsern und ich möchte, um die Vorteile der Tatsache, dass alle Selen-Treiber implementieren die gleiche Schnittstelle.
Jeder Testfall sollte wie folgt Aussehen:
package fm;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import static org.junit.Assert.*;
public class HomepageTest {
@Test
public void testTitle(WebDriver driver) {
driver.get("http://localhost/");
assertEquals("Foo", driver.getTitle());
}
@Test
public void testSearchForm(WebDriver driver) {
//...
}
}
Den vergangen WebDriver-Implementierung gesteuert werden irgendwo zentral. Ich werde wahrscheinlich benötigen, um überschreiben von JUnit Verhalten und ich hoffe, es ist möglich.
Ich soll es so machen, um zu vermeiden, zwei Dinge:
- Code Wiederholung: Wenn jeder Testfall würde, initialisieren Sie alle getesteten Browser in @, Bevor Sie die test-suite hätte eine Menge von wiederholten code, der schwer zu pflegen.
- Speed-test-suite: Wenn ich noch zentralisierte Kontrolle über die Reihenfolge und übergeben WebDriver-Implementierungen konnte ich problemlos verwalten zu öffnen, z.B. Firefox, führen Sie alle Testfälle, die es, schließen Sie es und öffnen Sie die nächste browser. Wenn jeder Testfall in der Lage zu öffnen und zu schließen-Browser auf seine eigene, Sie würde einen viel Zeit, um jedem test ausgeführt werden.
Jemand eine Idee, wie sollte ich es tun? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Selen-Projekt, das wir injizieren, was wir brauchen, mit http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/AbstractDriverTestCase.java und dann unser build ruft den browser auf und wir bekommen die tests, ausgeführt.
Haben Sie einen Blick auf unsere code-Basis, um etwas inspiration!
Bitte überprüfen Sie mit ISFW es unterstützt selenium webdriver/remote webdriver, als auch auf konventionellen (selenium1) rc Weg.
Sie müssen code schreiben, mit regelmäßigen selenium-api
zum Beispiel
Hier ist die arbeiten demo. Set browser-String, wie pro Ihre Anforderung.
Die FW unterstützen, Selen konventionelle Weise wie Selen 2 webdriver. Sie müssen, um entsprechende browser-string in der Anwendung-Eigenschaften. Im folgenden sind verschiedene browser-Konfigurationen für Firefox:
wenn nicht gefunden, dann fw prüfen/starten auf localhost/port
Selen server
konfigurierten host/port, wenn nicht gefunden, dann fw prüfen/starten auf
localhost/port, es wird führen Sie den test mit firefox-web-Treiber auf dem host
Maschine
Gleicher Weise für IE - *iexplore, *iehta, iexplorerDriver, iexplorerRemoteDriver
und so weiter.
Tat ich, was Sie sind/waren? versuchen zu tun, mit einer statischen Klasse, die steuert den webdriver und alle meine test die müssen die gleiche webdriver Holen Sie es von dort. Es hilft wirklich, wenn Sie mehrere tests, die Notwendigkeit der Nutzung der gleichen Sitzung. Und alle Ihre tests laufen in einem browser, so dass nicht alle tests öffnet sich eine neue browser-Instanz.
Vielleicht sollten Sie auch einen Blick auf testNG. Ich habe die Erfahrung gemacht, dass testNG ist besser für tests mit selenium, da ist es nicht so fokussiert auf unabhängige tests. Es bietet eine Menge nützlicher Funktionen.