2011-10-03 2 views
5

Il selenio ha la capacità di memorizzare temporaneamente gli elementi di dati e successivamente recuperarli in test successivi, ad es.Come utilizzare il selenio per memorizzare i valori tra i test

storeText | @id='ctl00_ContentPlaceHolder1_FormView1' | someValue 

Questo funziona bene all'interno di una singola prova e anche tra le prove nella stessa suite di test quando un valore deve essere portato avanti attraverso i confini di prova. Sfortunatamente non funziona tra Test Suite (che è un requisito per la nostra applicazione che include un numero di flussi di lavoro che si riferiscono allo stesso oggetto). Come può essere usato Selenium per memorizzare valori tra i confini di Test Suite?

risposta

4

È possibile memorizzare i valori da un test di selenio nella memoria locale del browser utilizzando javascript, ad es. se in precedenza il valore era stato memorizzato someValue:

getEval | this.browserbot.getUserWindow().localStorage.setItem("someValue",storedVars['someValue']) 
assertEval | this.browserbot.getUserWindow().localStorage.getItem("someValue") | ${someValue} 
storeEval | this.browserbot.getUserWindow().localStorage.getItem("assetLabel") | someValue 

In questo caso, this.browserbot.getUserWindow() restituisce la finestra dell'applicazione. Ciò memorizzerà someValue in Archiviazione locale da dove può essere successivamente recuperato nelle variabili memorizzate Selenium.

+0

Funzionerà se il profilo del browser viene ripristinato tra le suite di test? O dovresti impostare il selenio per usare un profilo statico? – artbristol

+0

@artbristol: Dipende da cosa intendi per "reset". Se comunichi a Firefox di cancellare i tuoi dati personali, questo andrà perso. Ma il Selenium IDE non lo fa mai, quindi, in generale, sarà ancora lì. –

+0

@Ross Ma il selenio non si avvia con un nuovo profilo Firefox ogni volta che si esegue una suite di test? Avrei pensato che lo Storage locale non sarebbe sopravvissuto a quello. – artbristol

0

È inoltre possibile implementare la persistenza nel codice che esegue i test del selenio. Se stai usando RC, questo sarebbe abbastanza banale. (cioè, solo query dirette del database da inserire/aggiornare e quindi recuperare).

Se si utilizza Selenese e non si ha accesso a un'API per la persistenza, è anche possibile creare una pagina Web veloce e sporca per archiviare i dati in un database e quindi leggerli per le successive esecuzioni di test. Ovviamente questo non è l'ideale, ma dovrebbe funzionare se non è possibile accedere a un archivio di persistenza direttamente dai test.

+0

Grazie e sì sono sicuro che ci sono alternative ma questo è specificamente IDE Selenium, cioè è in esecuzione in Firefox e gli utenti non sono sviluppatori. L'uso dell'archiviazione locale è una soluzione semplice per il problema che hanno. –