Domanda

Sto cercando di scrivere un test Selenium per una pagina Web che utilizza un evento onbeforeunload per richiedere all'utente prima di partire. Il selenio non sembra riconoscere la finestra di dialogo di conferma che viene visualizzata o fornire un modo per premere OK o Annulla. C'è un modo per fare questo? Sto usando il driver Java Selenium, se pertinente.

È stato utile?

Soluzione

Potresti scrivere un'estensione utente (o solo un po 'di JavaScript in un storeEval ecc.) che verifica che window.onbefore sia impostato il caricamento e quindi lo sostituisce con null prima di continuare dalla pagina. Brutto, ma dovrebbe toglierti dalla pagina.

Altri suggerimenti

Ho dovuto farlo solo per un'applicazione in cui il gestore onbeforeunload visualizza un prompt se un utente lascia una pagina mentre un documento si trova in uno stato non salvato. Codice Python:

driver.switch_to.alert.accept()

L'equivalente Java sarebbe:

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

Se l'avviso non esiste, il codice sopra riportato non riuscirà con un NoAlertPresentException , quindi non è necessario un test separato per verificare l'esistenza prima di accettare il prompt.

Uso Selenium 2.43.0 ma penso che questo sia fattibile da un po 'di tempo.

Nei casi in cui non voglio che venga visualizzato il prompt perché non è quello che sto testando, eseguo JavaScript personalizzato nel browser per impostare window.onbeununload su null prima di lasciare la pagina. L'ho inserito nel codice di smontaggio del test.

Attenzione: questo fornisce una soluzione alternativa

Watij - http://watij.com/ - può aiutarti qui. O se ti senti a tuo agio con il rubino, watir può aiutarti - http://wtr.rubyforge.org/ install.html

Quando mi sono trovato di fronte a un controllo limitato che avevo sul browser tramite Selenium, sono passato a MozLab plugin che ha risolto il mio problema se solo per una piattaforma browser.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top