Frage

Ich wollte nur ein paar Meinungen von Leuten, die Selen haben laufen ( http://selenium.openqa.org ) ich habe viel Erfahrung mit Watin hatte und sogar eine Aufnahme-Suite für sie schrieb. Ich hatte es einige gut strukturierten Code produzieren, aber nur von mir gehalten wird, scheint es, meine Firma alle, aber es aufgegeben. Wenn Sie Selen ausgeführt haben haben Sie schon viel Erfolg? Ich werde sein .NET 3.5 verwenden, wird auch Selen arbeiten mit ihm? Ist der Code erzeugt sauber oder einfach eine Liste aller Interaktion? ( http: / /blogs.conchango.com/richardgriffin/archive/2006/11/14/Testing-Design-Pattern-for-using-WATiR_2F00_N.aspx ) Wie gut funktioniert die verteilte Testsuite fair?

Alle anderen Nörgeleien oder Komplimente auf dem System würde sehr geschätzt werden!

War es hilfreich?

Lösung

Wenn Sie mit Selenium IDE generiert Code, erhalten Sie nur eine Liste von jeder Aktion dass Selen wird ausführt. Für mich ist Selenium IDE eine gute Möglichkeit, einen schnellen „versuchen und sehen,“ Test zu starten oder zu tun. Aber, wenn man über die Wartbarkeit denkt und lesbaren Code, müssen Sie Ihren eigenen Code schreiben.

Ein guter Weg, um guten Selen-Code zu erreichen, ist das Seite Objekt Pattern verwenden in einer Weise, dass der Code Ihres Navigationsfluss darstellt. Hier ist ein gutes Beispiel, das ich in Coding Dojo Floripa (aus Brasilien):

public class GoogleTest {

    private Selenium selenium;

    @Before
    public void setUp() throws Exception {
            selenium = new DefaultSelenium("localhost", 4444, "*firefox",
                            "http://www.google.com/webhp?hl=en");
            selenium.start();
    }

    @Test
    public void codingDojoShouldBeInFirstPageOfResults() {
            GoogleHomePage home = new GoogleHomePage(selenium);
            GoogleSearchResults searchResults = home.searchFor("coding dojo");
            String firstEntry = searchResults.getResult(0);
            assertEquals("Coding Dojo Wiki: FrontPage", firstEntry);
    }

    @After
    public void tearDown() throws Exception {
            selenium.stop();
    }

}


public class GoogleHomePage {

    private final Selenium selenium;

    public GoogleHomePage(Selenium selenium) {
            this.selenium = selenium;
            this.selenium.open("http://www.google.com/webhp?hl=en");
            if (!"Google".equals(selenium.getTitle())) {
                    throw new IllegalStateException("Not the Google Home Page");
            }
    }

    public GoogleSearchResults searchFor(String string) {
            selenium.type("q", string);
            selenium.click("btnG");
            selenium.waitForPageToLoad("5000");
            return new GoogleSearchResults(string, selenium);
    }
}

public class GoogleSearchResults {

    private final Selenium selenium;

    public GoogleSearchResults(String string, Selenium selenium) {
            this.selenium = selenium;
            if (!(string + " - Google Search").equals(selenium.getTitle())) {
                    throw new IllegalStateException(
                                    "This is not the Google Results Page");
            }
    }

    public String getResult(int i) {
            String nameXPath = "xpath=id('res')/div[1]/div[" + (i + 1) + "]/h2/a";
            return selenium.getText(nameXPath);
    }
}

Hoffe, das hilft

Andere Tipps

Ich verwende Selenium Remote Control, um ASP.Net-Anwendungen zu testen (was ich nehme an, Sie auch Targeting werden), und es funktioniert super.

Wenn Sie noch nie Selen verwendet haben, sehen einige der Screencasts für Selenium IDE. Dies gibt Ihnen eine gute Vorstellung davon, wie ‚Selen‘ arbeitet. Die IDE ist ein Firefox-Plugin, das im Grunde können Sie schnell Rekord-and-Play-Tests entwickeln, wie Sie gehen. Für größere Testsuiten oder für das Schreiben wirklich wartbare Tests obwohl, würde ich Selenium Remote Control empfehlen. (Die IDE ist toll, wenn Sie nur einen Anfang obwohl bekommen.)

Selenium Remote Control können Sie Ihre bevorzugte Sprache und Einheit Test-Framework verwenden, um einen Web-Browser zu fahren um Ihre Tests auszuführen. Wenn Sie am bequemsten mit C # sind / NUnit, können Sie Ihre Tests schreiben, die Art und Weise und nutzen die alle NUnit Leckereien, die Sie mögen. (Zum Beispiel kann das Test-Driven.net Plugin). Da auch die Tests in einer Hochsprache geschrieben sind, sind Sie in der Lage Dinge wie erben von einer bestimmten Testklasse zu tun, die Sie verwenden können, Ihre tatsächliche Testmethode Code viel sauberer zu machen. (Oder zumindest das ist die Art, wie ich meine Tests schreiben. Es läßt mich komplexe Szenarien testen, die meine Testmethode Linienzählung bei einer angemessenen Anzahl zu halten.)

Sie erwähnen verteilt Tests. Leider habe ich keine Möglichkeit zu nutzen, um das Selenium Grid Projekt mit NUnit gefunden. Selenium Grid ermöglicht es Ihnen, Ihre Testsuite über eine Reihe verschiedener Maschinen und Browser-Instanzen auszuführen. Also anstatt durch sagen 200 Testverfahren nacheinander ausgeführt wird (dh seriell), könnten Sie die Last verteilt sagen über vier Grid-Instanzen (dh zu einer Zeit, in vier verschiedenen Browsern Instanzen ausgeführt wird) auf einer einzigen Maschine oder mehreren Maschinen abhängig wie verteilen Sie erhalten mögen.

Wenn Sie Ihre Tests in Java oder PHP obwohl schreiben, könnte man mehr Glück hat. Ich erwarte, dass dies über NUnit mit der Veröffentlichung von NUnit2.5 zur Verfügung steht, die pNUnit für die parallele Testen umfassen wird.

Wenn Sie weitere Fragen zu Selen haben, nur Ihre ursprüngliche Frage klären, und ich werde glücklich sein, Ihnen zu versuchen und zu helfen. (Selen ist nur eines dieser Tools, die ich jeden Tag verwenden, so genieße ich helfen, neue Leute damit begonnen zu bekommen ..)

Ich begann mit Selenium IDE und Selenium Core-out. Das sind definitiv gute Werkzeuge, um Ihnen den Start. Aber sie sind nicht sehr mächtig, da Sie nur Selenese, Selen HTML-basierte Befehls-by-Befehlssprache verwenden können.

Jetzt benutze ich Selenium Remote Control mit dem Treiber Rubin, die mir erlaubt, zu nutzen, was Rubin bietet. Ich teste viele Umgebungen. Windows 2000, XP, Vista, Mac 10.4 / 10.5, und für jeden von denen, die gelten, Safari 2/3, Firefox 3.2, Internet Explorer 6/7

Selenium Ansprüche mit allen diesen Betriebssystemen und Browsern kompatibel zu sein, obwohl ich Probleme zur Zeit mit dem Internet Explorer, die mich (meine erste Frage auf Stackoverflow ist etwa, dass, tatsächlich). Aber ich weiß nicht von irgendwelchen anderen Tools, die diese leistungsstarke und arbeitet mit so vielen Plattformen.

Das größte Problem, das ich mit Selen hatte das DOM-Parsing. JavaScript ist childnodes ist unzuverlässig, weil Safari / Firefox Leerzeichen und Kommentarknoten ignorieren, während Internet Explorer nicht. XPath in Internet Explorer ist 10-20 mal langsamer als in SF / FF. innerHTML- ist nicht immer zuverlässig im Internet Explorer.

Selen ist ziemlich anständig Werkzeug, aber es gibt einige Dinge zu achten:

  • Selenium IDE und Selen Kern teilen nicht 100% gleiche Funktionalität. Zum Beispiel wird durch einen Rechtsklick IDE unterstützt, aber aktuelle Kern Release hat es nicht. Um jedoch eine neuere Version von ihrem Repository löst das.

  • Bei ext js, gwt usw. stellen Sie sicher, die richtige IDs für Ihre Anzeigeelemente anstelle von automatisch generierten (random) diejenigen haben.

  • Die Aufrechterhaltung von Testfällen. Ich habe Fälle gesehen, in denen sehr viel Mühe auf Selenium-Tests und eine gute Abdeckung gesetzt wurde. Später Tests begannen auszufallen als die Person, die sie war damit beschäftigt, mit anderen Aufgaben zu schaffen und sonst niemand wollte, dass sie berühren. Aber das Problem war mit dem Management nicht Selen.

Ich bin ein großer Fan von Selen. Ein wichtiger Gotcha ist das gut zu der Zeit voraus wissen, ist jedoch, dass Selenium IDE hat eine Menge Ärger mit Pop-up-Fenster. Diese Probleme bestehen nicht in Selenium RC, aber es kann die Entwicklung ein bisschen Kopfschmerzen machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top