Aleração de URL - Selenium Webdriver + Python

238 views
Skip to first unread message

Marcos Vieira da Silva

unread,
Mar 5, 2020, 8:41:18 AM3/5/20
to Selenium Brasil
Senhores(as), bom dia!

Sou novato e estou usando  o Selenium Webdriver + Python para automatizar uma tarefa de pesquisa  e seleção de resultados em um sistema web.

Situação:
 - O que acontece é que, ao informar/preencher os parâmetros no formulário e clicar em Buscar, quando encontrado algum resultado, os mesmos são apresentados na mesma página com outra URL (o mais óbvio).

- Quando não encontrado nada, a URL segue a mesma (do formulário) e recebo um alert de "nada encontrado (até aqui nada fora do comum).

Problema:

Estou tentando fazer um teste condicional (if, else) para que dependendo do resultado da busca (Encontrados ou Não) mudar o fluxo do teste. Estava usando elementos da página como referência: exemplo: "se elemento X estiver presente faça isso, se Não faça aquilo".  A ideia era verificar se um determinado elemento da página de resultados estivesse presente, significaria que "resultados foram encontrados" (e fomos para página de resultados), se não, quer dizer que nada foi encontrado (não saímos do formulário de busca).

Muito básico mas não funciona.

Fiz um teste agora pouco, deixando um print no "current_url" para saber o que acontecia em ambas situações (com e sem resultados encontrados) e notei que mesmo encontrando resultados na busca, a URL não muda, ela segue a mesma do formulário. Pela lógica deveria imprimir a URL 2 (abaixo) mas em todo caso ele sempre imprime a 1.


Alguém tem uma dica ou orientação? por favor!


Paulo RS Menezes

unread,
Sep 3, 2020, 10:50:06 AM9/3/20
to Selenium Brasil
Tive um problema semelhante e notei que a url nova só aparecia quando eu clicava em um menu da página. Aparentemente ao executar alguma tarefa a url atualiza. Espero que ajude.

Patrick Bressan Bremm

unread,
Sep 3, 2020, 9:09:35 PM9/3/20
to Selenium Brasil
Boa noite,

Então você preenche o formulário ao clicar em buscar tem duas chances: 
Encontrado ou Não Encontrado -> Sendo assim você pode usar a função findElement circuncidar com try e catch dando retorno se encontrou ou não o elemento com um pequeno timeout.

Então você pode validar o elemento de falha primeiro (tendo a certeza de que a página terminou de carregar). Caso retornar true (significa que ocorreu a falha). Então você sabe que o fluxo do cenário automático precisa voltar e preencher novamente a busca.
Se for false, você pode continuar o fluxo normal.

Você até pode usar o while(elementoEncontrado = false) fica preenchendo a busca até encontrar a mensagem de sucesso ai você atribui (elementoEncontrado = true), assim ele vai sair do while e seguir o script.

Lembrando que você pode fazer de n maneiras, talvez essa não seja melhor. Mas queria passar uma ideia de como você pode contornar. O ideal é implementar e ir ajustando =)

Reply all
Reply to author
Forward
0 new messages