Pergunta

Eu estou tentando escrever um teste de selênio para uma página web que usa um evento onbeforeunload para avisar o usuário antes de sair. O selênio não parece reconhecer o diálogo de confirmação que surge, ou para fornecer uma maneira de bater OK ou Cancelar. Há alguma maneira de fazer isso? Eu estou usando o driver Java selênio, se isso é relevante.

Foi útil?

Solução

Você poderia escrever uma extensão do usuário (ou apenas alguns JavaScript em um storeEval etc) que os testes que window.onbeforeunload está definido, e substitui-lo com nulo antes de continuar a partir da página. Feio, mas deve levá-lo para fora da página.

Outras dicas

Eu apenas tinha que fazer isso para um aplicativo da mina onde o manipulador onbeforeunload exibe um prompt se um folhas de utilizador uma página enquanto um documento está em um estado não salvo. código Python:

driver.switch_to.alert.accept()

O equivalente Java seria:

driver.switchTo().alert().accept();

Se o alerta não existe, o código acima irá falhar com um NoAlertPresentException por isso não há necessidade de um teste separado para verificar a existência antes de aceitar a solicitação.

Estou correndo selênio 2.43.0 mas acho que isso tem sido factível por um tempo agora.

Nos casos em que não quero o prompt para chegar em todos, porque não é isso que eu estou testando é, eu corro costume JavaScript no navegador para set window.onbeforeunload para null antes de sair da página. Eu coloquei isso no código de teste desmontagem.

Atenção: isto dá uma solução alternativa

Watij - http://watij.com/ - pode ajudar aqui. Ou se você está confortável com rubi, Watir pode ajudar - http://wtr.rubyforge.org/ install.html

Quando fui confrontado com controle limitado que eu tinha mais de navegador usando Selenium, virei-me para MozLab plugin que resolveu o meu problema se a plataforma apenas para um browser.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top