O forum atual do agile testers está sendo depreciado, ou seja, não é possível criar ou responder a threads no momento. Por favor utilize o novo fórum https://github.com/AgileTesters/forum/issues

Como abrir todos os link de uma página

Topic created · 9 Posts · 199 Visualizações
  • Olá pessoal! Tudo bem?

    Estou precisando criar um teste que abra todos os links da minha página.

    Eu consegui fazer com que meu código clique em links visíveis na tela, mas tenho muitos link que precisam de um clique no menu para ficarem visíveis.

    Alguém sabe como consigo fazer isso no Selenium(JUnit)?

  • algum motivo em particular pra fazer isso?
    tem ferramentas online que fazem esse tipo de coisa --> https://www.drlinkcheck.com/

  • @Leonardo-Galani tenho um teste de abertura de telas do sistema onde, pegamos os link do sistema e realizamos o acesso.
    Hoje, fazemos a atualização dos links manualmente, mas é um processo moroso e com grandes chances de falhas, por isso queria saber se consigo capturar os elementos que contenham os link e abri-los ou clicar em cada um deles.

    Vou dar uma olhada nesta ferramenta para ver se atende ao que preciso.

    Obrigado!

  • @allanpocosta a ferramenta indicada te atendeu?

  • @Douglas-Silva infelizmente não atendeu, pois os links da página só ficam disponíveis após eu fazer o login no sistema.
    Estou tentando achar uma forma de capturar os elementos que contenham os links e salvar em uma arraylist e ver se consigo abri-los posteriormente.

    Assim que conseguir resolver eu posto a solução.

  • @allanpocosta se a sua intenção é simplesmente salvar todos os links da página para depois acessar cada um e verificar se está funcionando, você pode pegar os links assim:

    List<WebElement> elementosComLink= driver.findElements(By.tagName("a"));
    List<String> links=new ArrayList<>();
    

    Tendo a lista de elementos, você pode extrair o href:

     for(WebElement elementoComLink : elementosComLink){
        links.add(elementoComLink.getAttribute("href"));
     }
    

    Com os links você pode realizar o acesso e verificar se está funcionando.

  • @Douglas-Silva devido a outras prioridades aqui na empresa tive que deixar esta questão para depois.

    Mas vamos lá…

    Consegui cria o código abaixo para acessar os links, o mesmo funciona da seguinte forma:

    • Eu armazeno os links de cada “módulo” do sistema;
    • Com o for eu acesso o módulo, após eu armazeno os links de cada tela dentro do módulo para depois abrir cada uma dessas telas;

    Ocorre que sempre que finaliza um “módulo”, a execução retorna ao primeiro e passa por todos novamente antes de dar sequência ao próximo.
    Ex.: Entra no módulo 1 e abre todas os links deste módulo. Antes de ir para o módulo 2, ele entra no 1 novamente e em seguida vai para o 2.
    Antes de ir para o 3, volta pra executar o 1 e 2 primeiro.

    Como consigo ajeitar esse for?

    List<WebElement> modulosHomePage = getNavegador().findElements(By.xpath("//div[@class='swiper-elements-top']//a[@href]"));
            List<String> modulosLinks = new ArrayList<>();
    
            for (WebElement elementoComLink : modulosHomePage) {
                modulosLinks.add(elementoComLink.getAttribute("href"));
            }
    
            List<String> telasLinks = new ArrayList<>();
    
            for (int i = 0; i < modulosLinks.size(); i++) {
                System.out.println("Módulos: " + i);
    
                getNavegador().get(modulosLinks.get(i));
    
                List<WebElement> telasModulos = getNavegador().findElements(By.xpath("//a[@href and contains(@href,'.aspx') and @target='_self']"));
    
                for (WebElement elementoComLink2 : telasModulos) {
                    telasLinks.add(elementoComLink2.getAttribute("href"));
                }
    
                for (int j = 0; j < telasLinks.size(); j++) {
                    getNavegador().get(telasLinks.get(j));
                    System.out.println("Telas: " + j);
                }
            }
    
  • @allanpocosta
    Acontece que nesse trecho

    for (WebElement elementoComLink2 : telasModulos) {
        telasLinks.add(elementoComLink2.getAttribute("href"));
    }
    

    Você está fazendo um add em telasLink, e mais abaixo manda rodar o telasLink. Sendo cumulativo vai rodar tudo novamente.

    Solução:
    Antes desse for citado zere o telasLink, garantindo que os valores presentes nele serão apenas os do módulo atual.

  • @Paulo-Gonçalves Obrigado pela ajuda!
    Agora estou conseguindo realizar a abertura dos links corretamente.

    Agradeço a todos pelo auxílio.