2013-02-13 8 views
12

Sto provando a testare la mia applicazione Web Backbone.js con Selenium IDE.Come aprire un URL con un hash utilizzando Selenium?

Il selenio può aprire l'URL iniziale del mio caso di test fintanto che si trova in una nuova finestra del browser, ad es. open /#/login - ma scade ogni volta che tenta di aprire URL successivi.

Sembra che il selenio stia ascoltando un evento che non viene attivato solo quando cambia l'hash dell'URL.

posso immaginare che questo accade ogni volta che si sta utilizzando hashchange + Selenio ...

+2

Ho presentato questo [come un bug] (http://code.google.com/p/selenium/issues/detail?id=5165&q = anchor & colspec = ID% 20Stars% 20Type% 20Status% 20Priority% 20Milestone% 20Owner% 20Summary) al team Selenium. – jabbett

+0

Sto osservando lo stesso comportamento, ma nonostante l'errore di timeout, il mio script continuerà quindi –

+0

Come nota per chiunque abbia il mio caso simile ma diverso, non ho potuto caricare un url nel selenio come 'https: // foo.com # bar'. Tuttavia, il selenio ** accetta ** gli hash dell'URL se l'hash è seguito da una barra di avanzamento, ad esempio "https: // foo.com #/bar". –

risposta

-1

A breve aggiornamento: Abbiamo rinunciato cercando di usare Selenio IDE per scrivere i nostri test di integrazione, e invece usato il Selenium Python bindings per Selenio WebDriver.

Con questo approccio, possiamo navigare verso un URL e quindi utilizzare WebDriverWait per rilevare una particolare modifica nel DOM, ad es.

driver = webdriver.Firefox() 
driver.get("/#/login") 
WebDriverWait(driver, 10).until(
    lambda driver: driver.find_element_by_css_selector("form.login").is_displayed()) 
5

di selenio IDE semplicemente utilizzare il comando 'storeEval', ad esempio:

Command = storeEval 
Target = window.location.hash='/search/events/birthdays/1' 

storeEval esegue i javascript Snippet assegnati a "target". Quello che puoi fare, è un caso di test che apre la pagina iniziale usando il comando open (url), e il resto dei casi cambia l'hash usando il comando storeEval.

1

Eseguire questo sulla console dello strumento di sviluppo ->window.location.hash='#abcde'. Dovrebbe cambiare hash per te nella scheda del browser.

eseguire JavaScript attraverso Selenio WebDriver e Java:

((JavascriptExecutor) driver).executeScript("window.location.hash='#abcde'"); 
Problemi correlati