Pregunta

Estoy utilizando selenio cuadrícula con TestNG para ejecutar mis pruebas en paralelo. Tengo ciertas pruebas que requieren que el usuario haya iniciado la sesión, así que tengo una cuenta de usuario configurada para la prueba.

he tenido cuidado para asegurar que las pruebas que implican la tala en como mi usuario de prueba se ejecutan en máquinas virtuales independientes para que las sesiones no se interrumpen, sin embargo, después de investigar algunas pruebas fallan regularmente resulta que esto no es suficiente. Por lo tanto, ya sea necesidad de:

  • Configurar un usuario nuevo para cada prueba (entiendo que esto puede ser la solución ideal, pero que va a tomar algún tiempo para configure / run.

  • Tener varias cuentas de usuario de prueba y asegurarse de que sólo se utiliza uno a la vez.

Si pudiera identificar el host de la máquina que ejecuta la prueba pude configurar cuentas de prueba en consecuencia. ¿Hay alguna manera de hacer esto, o hay otra solución que no he pensado?

¿Fue útil?

Solución 2

I resuelto mi problema mediante la creación de varias cuentas de usuario única puramente para las pruebas, todo termina con un número (por ejemplo: selenium.test1). Esto era fácil de automatizar un fuera de tarea utilizando selenio.

Me almacenar este número en el código, y cada vez que necesita un ensayo para ingresar el número se incrementa y el nombre de usuario se construye.

Lo hice considerar 'liberar' y, posteriormente, la reutilización de estas cuentas cuando terminen las pruebas, pero decidí que era más fácil sólo para asegurarse de que había un montón de prueba da cuenta de mis pruebas.

Otros consejos

Me solucionó el problema de identificar el mando a distancia mediante la colocación de un "¿quién soy yo la página". Dentro de mi WebDriver a distancia (o selenio) fábrica, que visita esa página, almacenarlo en esa clase que utilizo para mantener la sesión y el registro de la misma. Este nombre de host informes de la página, IP, tipo y versión del navegador.

Otra solución ofrece aquí:

https://groups.google.com/forum/#! tema / selenio usuarios / 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;
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top