Frage

Ich benutze Selen Grid mit TestNG, um meine Tests parallel auszuführen. Ich habe bestimmte Tests, bei denen ein Benutzer angemeldet wird, daher habe ich ein Benutzerkonto für das Testen konfiguriert.

Ich habe darauf geachtet, sicherzustellen, dass alle Tests, die sich anmelden, da mein Testbenutzer auf separaten virtuellen Maschinen durchgeführt werden, sodass die Sitzungen nicht unterbrochen werden. Nachdem einige regelmäßig fehlgeschlagene Tests untersucht wurden, stellt sich heraus, dass dies nicht ausreicht. Ich muss daher entweder:

  • Richten Sie für jeden Test einen neuen Benutzer ein (ich verstehe, dass dies die ideale Lösung sein kann, aber es dauert einige Zeit, bis er konfiguriert/ausgeführt wird.

  • Haben Sie mehrere Test -Benutzerkonten und stellen Sie sicher, dass jeweils nur einer verwendet wird.

Wenn ich den Host des Computers identifizieren könnte, der den Test ausführt, könnte ich Testkonten entsprechend einrichten. Gibt es eine Möglichkeit, dies zu tun, oder gibt es eine andere Lösung, an die ich nicht gedacht habe?

War es hilfreich?

Lösung 2

Ich habe mein Problem gelöst, indem ich mehrere eindeutige Benutzerkonten nur zum Testen eingerichtet habe, die alle mit einer Nummer enden (z. B. Selenium.Test1). Dies war einfach als One -Off -Aufgabe mit Selen zu automatisieren.

Ich speichere diese Nummer in Code und jedes Mal, wenn ein Test anmelden muss, wird die Zahl inkrementiert und der Benutzername erstellt.

Ich überlegte, "Veröffentlichung" zu veröffentlichen und diese Konten nach Abschluss der Tests wiederzuverwenden, aber es war einfacher, nur sicherzustellen, dass ich viele Testkonten für meine Tests hatte.

Andere Tipps

Ich habe das Problem gelöst, die Fernbedienung zu identifizieren, indem ich eine "wer bin ich Seite" aufstellte. In meiner Remote -Webdriver (oder Selen) -Fabrik besuche ich diese Seite, speichere sie in dieser Klasse, mit der ich die Sitzung abhält, und protokolliere sie. Diese Seite meldet Hostnamen, IP, Browsertyp und Version.

Eine andere Lösung, die hier angeboten wurde:

https://groups.google.com/forum/#!topic/selenium-users/8enrw9jnayq

 public static String[] getHostNameAndPort(String hostName, int port, SessionId session) {
        String[] hostAndPort = new String[2];
        String errorMsg = "Failed to acquire remote webdriver node and port info. Root cause: ";

        try {
            HttpHost host = new HttpHost(hostName, port);
            DefaultHttpClient client = new DefaultHttpClient();
            URL sessionURL = new URL("http://" + hostName + ":" + port + "/grid/api/testsession?session=" + session);
            BasicHttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST",
                    sessionURL.toExternalForm());
            HttpResponse response = client.execute(host, r);
            JSONObject object = extractObject(response);
            URL myURL = new URL(object.getString("proxyId"));
            if ((myURL.getHost() != null) && (myURL.getPort() != -1)) {
                hostAndPort[0] = myURL.getHost();
                hostAndPort[1] = Integer.toString(myURL.getPort());
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, errorMsg, e);
            throw new RuntimeException(errorMsg, e);            
        }
        return hostAndPort;
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top