Domanda

Sto usando Selenio griglia con TestNG per eseguire il mio test in parallelo. Ho alcuni test che richiedono all'utente di essere registrato, in modo da disporre di un account utente configurato per il test.

Sono stato attento a far sì che tutte le prove che coinvolgono il login come il mio utente di prova vengono eseguite su macchine virtuali separati in modo che le sessioni non sono interrotte, ma dopo aver esaminato alcuni test in mancanza di regolarità si scopre che questo non è sufficiente. Ho quindi o bisogno di:

  • Impostare un nuovo utente per ogni prova (ho capito questo può essere la soluzione ideale, ma ci vorrà del tempo per configurare / run.

  • Avere più account utente di prova, e garantire che solo uno è usato alla volta.

Se potessi identificare l'host della macchina che esegue il test ho potuto configurare gli account di prova di conseguenza. Esiste un modo per fare questo, o c'è un'altra soluzione che non ho pensato?

È stato utile?

Soluzione 2

Ho risolto il mio problema attraverso la creazione di diversi account utente univoci puramente per il test, il tutto termina con un numero (ad esempio: selenium.test1). Questo è stato semplice per automatizzare come un'una tantum attività utilizzando Selenio.

I memorizzare questo numero nel codice, e ogni volta che un test ha bisogno di accedere il numero viene incrementato e il nome utente è costruito.

ho considerato 'liberando' e, successivamente, il riutilizzo di questi conti quando le prove finiscono, ma deciso che era più facile solo per assicurarsi che ho avuto un sacco di account di prova per i miei test.

Altri suggerimenti

ho risolto il problema di individuare la distanza tramite la costituzione di un "chi sono io pagina". All'interno del mio WebDriver a distanza (o selenio) fabbrica, visito quella pagina, conservarlo in quella classe che uso per tenere la seduta, e la sua registrazione. Questa pagina riporta nome host, IP, tipo di browser e la versione.

Un'altra soluzione offerta qui:

https://groups.google.com/forum/#! argomento / selenio-utenti / 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;
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top