Pergunta

Estou usando a grade de selênio com o teste para executar meus testes em paralelo. Tenho certos testes que exigem que um usuário seja conectado, por isso tenho uma conta de usuário configurada para teste.

Tive o cuidado de garantir que quaisquer testes que envolvam o login como usuário do meu teste sejam executados em máquinas virtuais separadas para que as sessões não sejam interrompidas, no entanto, depois de investigar alguns testes com falha regularmente, isso não é suficiente. Portanto, eu preciso:

  • Configure um novo usuário para cada teste (entendo que essa pode ser a solução ideal, mas levará algum tempo para configurar/executar.

  • Tenha várias contas de usuário de teste e verifique se apenas uma é usada por vez.

Se eu pudesse identificar o host da máquina executando o teste, eu poderia configurar contas de teste de acordo. Existe alguma maneira de fazer isso ou há outra solução que eu não pensei?

Foi útil?

Solução 2

Resolvi meu problema configurando várias contas de usuário exclusivas puramente para teste, todas terminando com um número (por exemplo: Selenium.test1). Isso era simples de automatizar como uma tarefa única usando o Selenium.

Armazeto esse número no código e toda vez que um teste precisa fazer login, o número é incrementado e o nome de usuário é construído.

Eu considerei 'liberar' e, posteriormente, reutilizando essas contas quando os testes terminarem, mas decidi que era mais fácil apenas garantir que eu tivesse muitas contas de teste para meus testes.

Outras dicas

Resolvi o problema de identificar o controle remoto, colocando um "quem sou eu". Na minha fábrica remota do WebDriver (ou Selenium), visito a página, armazenei -a nessa aula que uso para segurar a sessão e o registro. Esta página Relatórios Nome do host, IP, tipo de navegador e versão.

Outra solução oferecida aqui:

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;
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top