1
resposta

Excluir um usuario procurando por ele na listagem

No exercício de exclusão do curso do Selenium, mostra o exemplo apenas de excluir um usuário que está naquela posição determinada. Porém eu queria excluir um usuário que tivesse o nome igual ao passado por parâmetro por exemplo. Tentei seguir o exemplo e fazer o código mas não está indo

public class UsuariosPage 
{
    private WebDriver driver;

    public UsuariosPage(WebDriver driver)
    {
        this.driver = driver;
    }

    public void excluiUsuarioPeloNome(String nome)
    {                
        int posicao = driver.getPageSource().indexOf(nome);
        System.out.println("Posição: " + posicao);
        driver.findElements(By.tagName("button")).get(posicao-1).click();

        //confirmando a mensagem de exclusão
        Alert alert = driver.switchTo().alert();
        alert.accept();
    }
}


public class UsuariosSystemTest 
{
    private WebDriver driver;
    private UsuariosPage usuarios;

    @Before
    public void inicializa() 
    {
         System.setProperty("webdriver.gecko.driver","D:\\Users\\macat\\Desktop\\selenium\\libs\\geckodriver.exe");

         this.driver = new FirefoxDriver();
         this.usuarios = new UsuariosPage(driver);

         usuarios.visita();
    }
    @Test
    public void deveExcluirUmUsuarioPeloNome() throws InterruptedException 
    {
        usuarios.novo().cadastra("teste excluir pelo nome", "testeexcluirpelonome@terra.com.br");
        assertTrue(usuarios.existeNaListagem("teste excluir pelo nome", "testeexcluirpelonome@terra.com.br"));

        usuarios.excluiUsuarioPeloNome("teste excluir pelo nome");
        Thread.sleep(1000); // foi preciso esperar 1seg para realizar a veirficacao
        assertFalse(usuarios.existeNaListagem("teste excluir pelo nome", "testeexcluirpelonome@terra.com.br"));
    }

    @After
    public void finaliza()
    {
        driver.close();
    }
}
1 resposta

Olá Mariane,

esse código vai acabar não funcionando por conta da questão da posição. Como o método driver.getPageSource() devolve uma string com toda a página, esse indexOf nao é a posição do botão entre os botoes possíveis, mas a posição dele dentro da string completa.

Para fazer esse trabalho de excluir o usuário baseado no nome, o fluxo do código vai mudar bastante. O que você precisará fazer primeiro na verdade é pegar todas as linhas da tabela de usuarios. Para isso basta usar o método driver.findElements pedindo todas as trs da tabela.

Com esta lista nas mãos, você precisará percorrê-la procurando qual das tr tem dentro da primeira coluna td o usuário com o nome esperado. Se a primeira coluna tiver o nome do usuário, ai você procurará o button de remoção desta tr para ser clicado. Você consegue recuperar esses elementos de dentro da tr usando o método findElement.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software