2011-10-03 9 views
5

Selen ma możliwość tymczasowego przechowywania elementów danych, a następnie pobierania ich w kolejnych testach, np.Jak używać selenu do przechowywania wartości między testami?

storeText | @id='ctl00_ContentPlaceHolder1_FormView1' | someValue 

Działa to dobrze w ramach jednego testu i pomiędzy testami w tym samym teście Suite gdy wartość musi być przeniesione poza granice testowych. Niestety nie działa między pakietami testowymi (co jest wymaganiem dla naszej aplikacji, która zawiera szereg przepływów pracy odnoszących się do tego samego obiektu). W jaki sposób można używać Selenium do przechowywania wartości w granicach Test Suite?

Odpowiedz

4

Możliwe jest przechowywanie wartości z testu Selenium w pamięci lokalnej przeglądarki przy użyciu javascript, np. jeśli wcześniej wartości zostały zapisane do 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 

w tym przypadku this.browserbot.getUserWindow() powraca okno aplikacji. Spowoduje to zapisanie wartości someValue w Magazynie lokalnym, skąd może być później odzyskana z zapisanych zmiennych Selenium.

+0

Czy to działa, jeśli profil przeglądarki zostanie zresetowany między pakietami testowymi? A może musisz ustawić selen, aby używał statycznego profilu? – artbristol

+0

@artbristol: To zależy od tego, co masz na myśli przez "reset". Jeśli powiesz przeglądarce Firefox wyczyszczenie danych osobistych, zostanie ona utracona. Ale Selenium IDE nigdy tego nie robi, więc generalnie wciąż będzie. –

+0

@Ross Ale czy selen nie uruchamia się ze świeżym profilem Firefoksa za każdym razem, gdy uruchamiasz pakiet testowy? Myślałem, że Local Storage nie przetrwa tego. – artbristol

0

Można również zaimplementować trwałość w kodzie, który uruchamia testy Selenium. Jeśli używasz RC, byłoby to dość banalne. (Tylko proste zapytania do bazy danych, aby wstawić/zaktualizować, a następnie pobrać).

Jeśli korzystasz z Selenese i nie masz dostępu do interfejsu API w celu zachowania trwałości, możesz również uruchomić szybką i brudną małą stronę internetową, aby przechowywać dane w bazie danych, a następnie odczytać ją w celu wykonania kolejnych testów. Oczywiście nie jest to idealne rozwiązanie, ale powinno działać, jeśli nie można uzyskać dostępu do magazynu trwałości bezpośrednio z testów.

+0

Dzięki i tak jestem pewien, że istnieją alternatywy, ale jest to w szczególności Selenium IDE, tj. Działa w Firefoksie, a użytkownicy nie są programistami. Używanie Local Storage to proste rozwiązanie problemu, który mają. –

Powiązane problemy