ďťż
Selenium
bit_tester - 19 lut 2008, o 07:46 Pracując ostatnio z automatyzacją testów natknąłem się na sprytną aplikację Selenium. Istnieją trzy tryby pracy Selenium - Core to narzędzie testowe dla aplikacji sieciowych. Testy wykonywane są w przeglądarce symulując użytkownika. Do pobrania z http://selenium-core.openqa.org/download.jsp - Remote Control Umożliwia pisanie automatycznych testów UI aplikacji sieciowych dla różnych zapytań HTTP przy użyciu przeglądarek z obsługą JavaScript. W zestawie jest Serwer Selenium, który komunikuje się bezpośrednio z przeglądarką przy użyciu AJAX (XmlHttpRequest). Można również wysyłać komunikaty bezpośrednio do serwera przy użyciu żądań HTTP GET/POST; dzięki temu możemy użyć każdy język programowania potrafiący tworzyć zapytania HTTP. Nagrany kod dostępny jest w najważniejszych językach programowania (Java, C#, .NET, Perl, Python i Ruby). - IDE Jest to rozwiązanie dla ludzi nie znających języków programowania, a zainteresowanych automatyzacją. Odpala się jako nakładka na Firefox. Służy on do nagrywania, edytowani i debugowania testów. Później możemy łatwo nagrane skrypty odtwarzać. Aby rozpocząć pracę z Selenium IDE potrzebujecie FireFox i wtyczkę pobraną z http://selenium.openqa.org/ Tutorial dla Seleniium Remote Control http://selenium-rc.openqa.org/tutorial.html#sameorigin Interesujący artykuł o testowaniu PHP w Selenium [url]Practical Testing PHP Applications with Selenium[/url] Czekam na wasze wrażenia z użycia narzędzia plus przydatne materiały po polsku... bit_tester - 20 lut 2008, o 09:58 Dorzucam jeszcze mały skrypt testowy nagrany przy pomocy Selenium IDE w oparciu o prostą komendę verifyTitle. Zadaniem skryptu jest: - wyszukanie w google forum.testerzy.pl - przejście do wątku o Selenium i sprawdzenie poprawności tytułu strony. Ważna jest duża prostota "edytowalności" skryptu testowego. Pomaga w tym lista dostępnych komend oraz ich opis. bit_tester - 20 lut 2008, o 10:02 Test po nagraniu i wyeksportowaniu do: JAVA Kod: Zaznacz całypackage com.example.tests; import com.thoughtworks.selenium.*; import java.util.regex.Pattern; public class NewTest extends SeleneseTestCase { public void testNew() throws Exception { selenium.open("http://www.google.pl/"); selenium.type("q", "forum testerzy"); selenium.click("btnG"); selenium.waitForPageToLoad("30000"); selenium.click("//a/b[2]"); selenium.waitForPageToLoad("30000"); selenium.click("link=Strona główna forum"); selenium.waitForPageToLoad("30000"); selenium.click("link=Automatyzacja / Automatization"); selenium.waitForPageToLoad("30000"); selenium.click("link=Selenium"); selenium.waitForPageToLoad("30000"); verifyEquals("forum.testerzy.pl ⢠Zobacz wątek - Selenium", selenium.getTitle()); } } C# Kod: Zaznacz całyusing System; using System.Text; using System.Text.RegularExpressions; using System.Threading; using NUnit.Framework; using Selenium; namespace SeleniumTests { [TestFixture] public class test1 { private ISelenium selenium; private StringBuilder verificationErrors; [SetUp] public void SetupTest() { selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://localhost:4444"); selenium.Start(); verificationErrors = new StringBuilder(); } [TearDown] public void TeardownTest() { try { selenium.Stop(); } catch (Exception) { // Ignore errors if unable to close the browser } Assert.AreEqual("", verificationErrors.ToString()); } [Test] public void TheTest1Test() { selenium.Open("http://www.google.pl/"); selenium.Type("q", "forum testerzy"); selenium.Click("btnG"); selenium.WaitForPageToLoad("30000"); selenium.Click("//a/b[2]"); selenium.WaitForPageToLoad("30000"); selenium.Click("link=Strona główna forum"); selenium.WaitForPageToLoad("30000"); selenium.Click("link=Automatyzacja / Automatization"); selenium.WaitForPageToLoad("30000"); selenium.Click("link=Selenium"); selenium.WaitForPageToLoad("30000"); try { Assert.AreEqual("forum.testerzy.pl ⢠Zobacz wątek - Selenium", selenium.GetTitle()); } catch (AssertionException e) { verificationErrors.Append(e.Message); } } } } SiD - 29 lut 2008, o 07:41 Mały HINT: Ciężko przeszukuje się zasoby Selenium. Warto więc skorzystać z pomocy. Wszystko na jednej stronie: http://release.openqa.org/selenium-core/0.8.0/reference.html Gość - 22 lip 2008, o 10:36 Witam. Używam Selenium od niedawna (wersja plugin-ff). Nie znam języków programowania, więc używam html. Często mam problemy, z obsługą popupów. Na nowo otwartych oknach, selenium nie radzi sobie ze znajdywaniem linków. Mało tego, często samego popupa nie widzi a przełączanie okienek nic nie daje Nie rozumiem też, albo nie widzę, jak zrobić "repeat test"? Może mnie ktoś oświeci, będę bardzo wdzięczny. Dopiero poznaje Selenium, jest mi dość ciężko, może przez ten brak wiedzy informatycznej, ale myśle, że za jakiś czas podziele się z Wami tym czego się sam nauczę. Można by bardziej rozwinąć ten wątek. Uważam, że wielu testerów by na tym skorzystało. Pozdrawiam radoslaw.smilgin - 23 lip 2008, o 11:32 Często mam problemy, z obsługą popupów. Na nowo otwartych oknach, selenium nie radzi sobie ze znajdywaniem linków. Mało tego, często samego popupa nie widzi a przełączanie okienek nic nie daje W przypadku selenium będziesz miał kłopot z Pop-upami. Niestety jest to znany problem i nie widać rozwiązania w kolejnych wersjach. Ponieważ Selenium radzi sobie jedynie z głównym oknem przeglądarki spróbuj otwierać pop-up-y w nim. To jedyne znane mi rozwiązanie. Polecam ci spróbować z innymi narzędziami open source bo to jedyna metoda by objąć testami różne elementy stron www. Spróbuj Watir. Z tego co pamiętam obsługuje jedynie IE ale powinno sobie poradzić. sectt - 4 sie 2008, o 10:57 Witam, Może ktoś z forumowiczów wie w jaki sposób uruchomić test z parametrem? Potrzebuje z jednego testu na końcu wywołać test drugi ale z parametrem. Potrzebuje przesłać do drugiego testu zmienną liczową. Czy jest to możliwe? jaszczurkaa - 11 sie 2008, o 11:11 Witam, I od razu mam pytanie: czy ktoś spotkał się i używa Selenium IDE+UI-Element charli_22 - 22 wrz 2008, o 12:55 Witam. Używam Selenium od niedawna (wersja plugin-ff). Nie znam języków programowania, więc używam html. Hej Ja używam plugina do FF tylko do nagrywania testów. Jeśli chcę uruchomić nagrane testy to używam już Selenium-RC. Tutaj obsługa pop-upów działa bez zarzutów. Jedyny problem to trzeba znać się troche na programowaniu. W moim wypadku jest to java. Ale nie przejmowałbym się tym, bo naukę Javy zacząłem w momencie kiedy zacząłem używać Selenium-RC i jak dotychczas jakoś sobie radze. Co do pop-upa to łatwo można go obsłużyć w taki sposób (oczywiście w java): Kod: http://sahi.co.in/w/. Łatwe w konfiguracji i obsłudze. Potrafi przetrawić pop-upy bez szczególnych zabiegów. Korzysta z prostego API, które jest opisane na stronce, więc początkujący tester nie powinien mieć problemu z tym. Villemo - 6 paź 2008, o 13:29 hej, mam pytanie/prosbe mam takie zadanie, do wykonania na selenium, mam nagrac jakis test, a potem zrobic tak, zeby ten test byl odtwarzany 20, 100, 1000 razy dokladnie w tym samym momncie, czy symulowanie duzlej liczby uzytkownikow. pomocy streser - 9 paź 2008, o 12:37 hej, mam pytanie/prosbe mam takie zadanie, do wykonania na selenium, mam nagrac jakis test, a potem zrobic tak, zeby ten test byl odtwarzany 20, 100, 1000 razy dokladnie w tym samym momncie, czy symulowanie duzlej liczby uzytkownikow. pomocy Domyślam się, że chodzi o testy wydajności - polecam programik JMeter. pawel77 - 3 lis 2008, o 10:22 Witam, mam taki problem, nagrywam test w selenium a następnie odtwarzam go. Nagle pokazuje się błąd : [error] Element TextField not found . Najlepsze jest to że czasami ten test przechodzi i nie pokazuje żadnego błędu. Prośba o pomoc, bo sam nie mam pojęcia co się dzieje. Gość - 3 lis 2008, o 13:55 Wiecie co już chyba wiem, może komuś przyda się ta wiedza jak będzie miał podobny problem jak ja. Trzeba zmniejszyć prędkość odtwarzania testu i powinno być ok. sss - 3 lis 2008, o 13:56 Doszedłem sam - trzeba zmniejszyć prędkość odtwarzania testu i powinno być wszystko ok. radoslaw.smilgin - 3 lis 2008, o 19:09 Panowie, Zwolnienie testu to lekka prowizorka. Jeśli jest to długi ciąg testów to znacznie wydłuży wam to wykonywanie testów. Lepiej jest zastosować wcześniej jedną z komend "wait" np. "waitForPageToLoad". Dzemeuksis - 5 lis 2008, o 09:21 @down: Albo waitForElementPresent, gdzie parametrem będzie wskazanie elementu, na którego załadowanie czekamy. W przypadku opisywanym przez pawla77 będzie to wspomniany TextField. Tymczasem mam pytanie co do: "Jeśli chcę uruchomić nagrane testy to używam już Selenium-RC." Jak to zrobić? Jak powiązać pliki z nagranymi testami generowane przez Selenium IDE w formacie JAVA z RC? Jak uruchomić je z poziomu RC? Trzeba je najpierw skompilować? owiecka - 4 gru 2008, o 14:02 A czy w tym całym Selenium jest możliwość (jak to zrobić) przeszukania całego serwisu i odnalezienie wszystkiego co jest linkiem? Chodzi mi o to że chcę w szybki sposób przeszukać cały serwis w celu odnalezienia wszystkiego co wyrzuca błąd 404. Jestem początkującym testerem i nie bardzo wiem jak to rozgryźć:/ Serwis ciągle się rozwija i odnośniki się zmieniają, więc nie bardzo mogą być wpisywanie statycznie. Z góry dziękuję za pomoc:) radoslaw.smilgin - 4 gru 2008, o 18:13 Do tego nie potrzebujesz selenium. Wystarczy najprostszy link checker. Sugeruję Xenu: http://home.snafu.de/tilman/xenulink.html Owiecka - 11 gru 2008, o 12:40 Dzięki. Xenium prawie rozwiązalo problem:) A co do metody w selenium WaitForElementPresent to ja takowej nie mam a jest mi naprawdę potrzebna, bo w aplikacji po wciśnięciu jednego buttonu pokazuje sie drugi po jakimś czasie... Owiecka - 12 gru 2008, o 08:58 I jeszcze jedna kwestia. Napisałam test który przechodzić ma przez kolejne formularze zamówienia. Jednak w czasie testu nagle wypełnienia pewnych pól znikają automagicznie:/ Zupełnie tego nie rozumiem bo to naprawdę prosty test bez żadnych skomplikowanych poleceń. Polecenie którym uzupełniam przykładowe pole to: Kod: Zaznacz całyselenium.type("orderForm:mainFirmName", "test"); Takich pól jest 10. W pewnym momencie robi się w wybranych polach pusto i test nie przechodzi bo te pola są po prostu wymagane:/ LadyRoot - 7 sty 2009, o 08:12 Mam wątpliwości co do użyteczności Selenium dla moich celów. Potrzebuję skryptu, który przejdzie za mnie całość transakcji zakupowej w serwisie, łącznie z przekierowaniami na strony np. eCard-u, wpisaniem danych i powrotem do serwisu macierzystego. Potrafię przygotować taki skrypt w Selenium IDE, ale nie potrafię wyobrazić sobie, w jaki sposób mogłabym go odpalać automatycznie i raportować jego wynik (interesuje mnie monitoring działania wszystkich modułów serwisu, odpalany przypuśćmy co godzinę z poziomu cron-a jako automatyczna transakcja testowa). Czy da się coś takiego zrobić, czy jednak szukać innego rozwiązania? Nie jestem programistą (znam tylko C i C++) i nie bardzo radzę sobie z obsługą niespecjalnie dobrze udokumentowanego Selenium z poziomu C#, o Javie nie wspominając. Z linii poleceń działa wywołanie engine'u i skrypty BadBoy-a, ale ten nie potrafi sobie poradzić z transakcjami tego typu. Czy macie jakieś pomysły, jak zrealizować taki monitoring? Darkin1 - 12 lut 2009, o 09:13 Selenium RC Aby uruchomić nagrane wcześniej plan testowy tworzymy plik skryptowy RunSelenium.cmd Kod: Zaznacz całyjava -jar "C:\selenium-RC-2\selenium-server-1.0-beta-2\selenium-server.jar" -htmlSuite "*chrome C:\Program Files\Mozilla Firefox\firefox.exe" "http://wp.pl" "C:\TS\wp\TEST.html" "C:\TS\wp\RESULTS.html" java -jar "<sciezka dostepu do katalogu>\selenium-server.jar" -htmlSuite "<sciezak dostepu do przegladarki>" "<strona poczatkowa testu>" "<sciezka dostepu do pliku z przypadkami testowymi>" "<sciazka dostepu do pliku z logami z testu>" Możliwe ścieżki do przeglądarek: - Firefox 2 *chrome C:\Program Files\Mozilla Firefox2\firefox.exe - Firefox 3 *chrome C:\Program Files\Mozilla Firefox\firefox.exe - Opera *opera C:\Program Files\Opera\opera.exe - IE 7 *iehta Oczywiście ustawiamy tutaj swoje ścieżki dostępu do przeglądarek, można też próbować z takimi wywołaniami przeglądarek: *firefox *mock *firefoxproxy *chrome *iexploreproxy *pifirefox *iexplore *firefox3 *safariproxy *googlechrome *konqueror *firefox2 *safari *piiexplore *opera *iehta *custom Teraz tworzymy plik z listą przypadków testowych TEST.html Kod: Zaznacz cały<table> <tr> <td>Test suite for the whole application</td> </tr> <tr> <td><a href="wp.html" target="testFrame">Test</a></td> </tr> </table> Jest jeszcze potrzebny plik z testem nagranym na FF wp.html Kod: Zaznacz cały<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head profile="http://selenium-ide.openqa.org/profiles/test-case"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="selenium.base" href="" /> <title>wp</title> </head> <body> <table cellpadding="1" cellspacing="1" border="1"> <thead> <tr><td rowspan="1" colspan="3">wp</td></tr> </thead><tbody> <tr> <td>open</td> <td>/</td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>link=Film</td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>//img[@alt='Recenzje']</td> <td></td> </tr> </tbody></table> </body> </html> Tworzymy czysty plik gdzie bedą zapisywane rezultaty naszego testu RESULTS.html Teraz odpalamy w konsoli nasz plik RunSelenium.cmd np. C:\TS>RunSelenium.cmd Oczywiście do uruchomienia selenium jest potrzebne wgranie Javy, ale o tym juz chyba nie musze mówić ;] srv - 19 lut 2009, o 15:57 Witam, mam pewien problem a właściwie nawet dwa. Używam selenium do automatyzacji testów stron www, jednak pojawił się pewien kłopot. Selenium nie radzi sobie dobrze ze stronami (właściwie programami) internetowych zbudowanych w oparciu o ramki, co zresztą specjalnie nie dziwi. Właściwie problem stanowi lokalizowanie poszczególnych elementów. Jest jakiś sprawdzony sposób na jednoznaczne lokalizowanie elementów bądź wybór ramki w ramach, której będziemy się poruszać ?? Ewentualnie może być jakiś inny program, ważne był obsługiwał zmienne, pętle i asercje A druga sprawa nie co bardziej ciekawe i pilna. Selenium IDE oferuje możliwość nagrywania testów w języku c# na platformę .NET, które następnie można wrzucić do VS 2005 i odpowiednio modelować. Pytanie jak odtwarzać takie testy, najlepiej przy wykorzystaniu Selenium RC?? Jedyny opisany tutaj sposób oferuję odtwarzanie testów nagranych / napisanych w standardowym html co nie jest specjalnie wygodne, zwłaszcza jeśli chodzi o wielokrotne wykorzystanie kodu i generowanie losowych danych wejściowych. Jubby - 1 kwi 2009, o 11:29 Widzę, że niektórzy z was posiadają dużo informacji na selenium, jeśli posiadacie jakieś ciekawe informacje na temat tego narzędzia: helpy, tutoriale itp. to proszę o wrzucenie ich na forum lub podesłanie na przemyslaw.soltys@gmail.com ewa - 19 sie 2009, o 07:49 Witam, czy są dobre materiały odnośnie Selenium IDE w języku polskim. Jeśli ktoś znalazł- bardzo proszę o namiary. streser - 19 sie 2009, o 13:18 mam pewien problem a właściwie nawet dwa. Używam selenium do automatyzacji testów stron www, jednak pojawił się pewien kłopot. Selenium nie radzi sobie dobrze ze stronami (właściwie programami) internetowych zbudowanych w oparciu o ramki, co zresztą specjalnie nie dziwi. Właściwie problem stanowi lokalizowanie poszczególnych elementów. Jest jakiś sprawdzony sposób na jednoznaczne lokalizowanie elementów bądź wybór ramki w ramach, której będziemy się poruszać ?? Ewentualnie może być jakiś inny program, ważne był obsługiwał zmienne, pętle i asercje Wystarczy użyć funkcji Kod: Zaznacz całyselenium.SelectFrame("Nazwa ramki") później już poruszasz się tylko wewnątrz danej ramki i możesz używać nazw linków, przycisków etc. Ewentualnie możesz pokusić się o używanie w testach XPathów. Selenium IDE oferuje możliwość nagrywania testów w języku c# na platformę .NET, które następnie można wrzucić do VS 2005 i odpowiednio modelować. Pytanie jak odtwarzać takie testy, najlepiej przy wykorzystaniu Selenium RC?? Jedyny opisany tutaj sposób oferuję odtwarzanie testów nagranych / napisanych w standardowym html co nie jest specjalnie wygodne, zwłaszcza jeśli chodzi o wielokrotne wykorzystanie kodu i generowanie losowych danych wejściowych. Musisz mieć aplikację postawioną w tej samej lokalizacji co selenium-server. Ściągasz sobie selenium-server.jar ze strony selenium (google it). wrzucasz do katalogu np. vendor w aplikacji. wchodzisz do tego katalogu i odpalasz server - w kosoli: Kod: Zaznacz całyjava -jar selenium-server.jar To powinno wystarczyć (tzn. prawie zawsze działa). Teraz wchodzisz do katalogu aplikacji i odpalasz skrypt z testem, w zależności od języka np w Ruby jest to: Kod: Zaznacz całyruby ./tests/selenium/nazwa_pliku.rb Gość - 5 gru 2009, o 15:42 Hej mam problemmm uruchamiam *.bat echo @off java -jar C:\sel\selenium-remote-control-1.0.1\selenium-server-1.0.1\selenium-server.jar -htmlSuite "*iexplore" "http://www.google.pl" "C:\sel\test.html" "C:\sel\result.html" pause i mam BŁAD 'this.link' jest pusty lub nie jest obiektem Kod: 0 URL: file//C:\Dokume~1\User\USTAW~1\Temp\customProfile444078\core\TestRunner.hta ?? moze ktos ma jakis pomysl DOdam ze pod innymi przegladarkami blad nie wystepuje ale nie mozna uruchomic testu ;] kochin - 24 lut 2010, o 12:51 Mam problem z Selenium. Mam listę 10 pozycji na liście. Przy każdej pozycji jest ikonka "Zarządzanie" w alt. Chce kliknąc po kolei w te ikonki. Z pierwszą nie ma problemu, komenda click i value //img[@alt='Zarządzaj uprawnieniami'] Jednak mam problem z kolejnymi. W jakis posób za pomocą XPATH kliknąc np. w drugą ikonkę?? streser - 2 mar 2010, o 16:38 Mam problem z Selenium. Mam listę 10 pozycji na liście. Przy każdej pozycji jest ikonka "Zarządzanie" w alt. Chce kliknąc po kolei w te ikonki. Z pierwszą nie ma problemu, komenda click i value //img[@alt='Zarządzaj uprawnieniami'] Jednak mam problem z kolejnymi. W jakis posób za pomocą XPATH kliknąc np. w drugą ikonkę?? Kod: Zaznacz całyclick //li[2]//img[@alt='Zarządzaj uprawnieniami'] click //li[3]//img[@alt='Zarządzaj uprawnieniami'] itd. Powinno wystarczyć... Proponuje poczytać o XPath'ach w selenium jeśli potrzebujesz czegoś bardziej skomplikowanego... kochin - 5 mar 2010, o 10:28 Napisałem "lista" w przenośni. Tak naprawdę to jest automatycznie generowana tabela i przez to xpath dla niej wygląda kosmicznie i zmienia sie przy najmniejszej zmianie listy. Jednak znalazłem dobre rozwiązanie. Nie wiedziałem dlaczego jesli chce trafić w druga ikonę to po wpisaniu //img[@alt='Zarządzaj uprawnieniami'][2] w pole target to nie znajduje mi elementu. Trzeba wpisać xpath=(//img[@alt='Zarządzaj uprawnieniami'])[2] w pole target i wszystko działa bez zabawy w kosmiczne xpathy dla tabel. Może się komuś przyda. adamcz - 19 kwi 2010, o 07:58 Hej Mam problem: każda nasza aplikacja wymaga zalogowania się, dlatego testy z badboya i selenium (serwer) wywalają ciągle 401 nawet dla strony logowania (np weryfikacja tekstu) po zalogowaniu również. W jaki sposób można to obejść? Z góry dzięki za opd. selenium_1 - 19 kwi 2010, o 09:12 Jest to o tyle dziwne, że selenium przy odpowiednim ustawieniu skryptu wykonuje polecenie użytkownika. Jeśli ty jesteś w stanie się zalogować Selenium również powinna. Podaj link do strony to zbadamy. W innym przypadku masz dwie opcje: a) programiści ściągają zabezpieczenie i aplikacja nie wymaga logowania się (nie rekomenduje się na serwerze produkcyjnym!!) b) napisz skrypt lub program do logowania się i podepnij go na początek testu streser - 19 kwi 2010, o 10:34 Hej Mam problem: każda nasza aplikacja wymaga zalogowania się, dlatego testy z badboya i selenium (serwer) wywalają ciągle 401 nawet dla strony logowania (np weryfikacja tekstu) po zalogowaniu również. W jaki sposób można to obejść? Z góry dzięki za opd. Domyślam się, że chodzi o http-auth. Było coś takiego jak: Kod: http://tinyurl.com/yyvxepn adamcz - 19 kwi 2010, o 13:56 Nie możemy usunąć logowania @streser mógłbym prosić o przykład całego testu zawierającego open '//<user>:<password>@<host>:<port>/<url-path>' ? streser - 20 kwi 2010, o 18:58 @streser mógłbym prosić o przykład całego testu zawierającego open '//<user>:<password>@<host>:<port>/<url-path>' ? U mnie to działa: Kod: Zaznacz cały $this->open("http://username:password@testowka.pl"); - PHP Kod: Zaznacz cały@selenium.open "http://username:password@testowka.pl" - Ruby streser - 20 kwi 2010, o 19:04 A tak swoją drogą, to polecam zbudować sobie środowisko testowe oparte o Selenium RC... Postawić instancję testową na jakiejś maszynie i tam w środowisku odizolowanym od Internetu odpalać testy na localhoscie, bez konieczność używania http auth... ktosinski10 - 23 kwi 2010, o 17:35 witam dopiero co zaczalem zabawe z selenium ide i mam problem z czyms takim. otoz w google wpisuje jakis tekst, klikam szukaj i chce zeby zostalo sprawdzone czy tytul strony, ktory sie pojawil jako wynik wyszukiwania jest zgodny z tym co sie wpisalo w szukaj np, Sad - Start i pierwsza strona tak sie nazywa. wyeksportowalem ten test do javy i mamy cos takiego: Kod: Zaznacz całypackage com.example.tests; import com.thoughtworks.selenium.*; import java.util.regex.Pattern; public class plik extends SeleneseTestCase { public void setUp() throws Exception { setUp("http://change-this-to-the-site-you-are-testing/", "*chrome"); } public void testPlik() throws Exception { selenium.open("/"); selenium.type("q", "Sad - Start"); selenium.click("btnG"); verifyTrue(selenium.isTextPresent("link=Sad - Start")); } } i na koncu pojawia mi sie [error]false mimo to ze nazwy sie zgadzaja... GrzesTSW - 22 lip 2010, o 12:53 mam pewien problem a właściwie nawet dwa. Używam selenium do automatyzacji testów stron www, jednak pojawił się pewien kłopot. Selenium nie radzi sobie dobrze ze stronami (właściwie programami) internetowych zbudowanych w oparciu o ramki, co zresztą specjalnie nie dziwi. Właściwie problem stanowi lokalizowanie poszczególnych elementów. Jest jakiś sprawdzony sposób na jednoznaczne lokalizowanie elementów bądź wybór ramki w ramach, której będziemy się poruszać ?? Ewentualnie może być jakiś inny program, ważne był obsługiwał zmienne, pętle i asercje Wystarczy użyć funkcji Kod: Zaznacz całyselenium.SelectFrame("Nazwa ramki") później już poruszasz się tylko wewnątrz danej ramki i możesz używać nazw linków, przycisków etc. Ewentualnie możesz pokusić się o używanie w testach XPathów. Selenium IDE oferuje możliwość nagrywania testów w języku c# na platformę .NET, które następnie można wrzucić do VS 2005 i odpowiednio modelować. Pytanie jak odtwarzać takie testy, najlepiej przy wykorzystaniu Selenium RC?? Jedyny opisany tutaj sposób oferuję odtwarzanie testów nagranych / napisanych w standardowym html co nie jest specjalnie wygodne, zwłaszcza jeśli chodzi o wielokrotne wykorzystanie kodu i generowanie losowych danych wejściowych. Musisz mieć aplikację postawioną w tej samej lokalizacji co selenium-server. Ściągasz sobie selenium-server.jar ze strony selenium (google it). wrzucasz do katalogu np. vendor w aplikacji. wchodzisz do tego katalogu i odpalasz server - w kosoli: Kod: Zaznacz całyjava -jar selenium-server.jar To powinno wystarczyć (tzn. prawie zawsze działa). Teraz wchodzisz do katalogu aplikacji i odpalasz skrypt z testem, w zależności od języka np w Ruby jest to: Kod: Zaznacz całyruby ./tests/selenium/nazwa_pliku.rb Gość - 2 sie 2010, o 10:10 Mój problem: 1. tworzę test w IDE który polega na dodaniu czegoś do listy. Wszystko jest ok element zostaje dodany. 2. ten sam test odpalam na RC (PHP). Test przechodzi wszystko jest ok jednak element nie zostaje dodany (nie ma go na liscie) Czemu po teście nr 2 nie dodaje się element? streser - 20 sie 2010, o 09:35 mam pewien problem a właściwie nawet dwa. Używam selenium do automatyzacji testów stron www, jednak pojawił się pewien kłopot. Selenium nie radzi sobie dobrze ze stronami (właściwie programami) internetowych zbudowanych w oparciu o ramki, co zresztą specjalnie nie dziwi. Właściwie problem stanowi lokalizowanie poszczególnych elementów. Jest jakiś sprawdzony sposób na jednoznaczne lokalizowanie elementów bądź wybór ramki w ramach, której będziemy się poruszać ?? Ewentualnie może być jakiś inny program, ważne był obsługiwał zmienne, pętle i asercje Wystarczy użyć funkcji Kod: Zaznacz całyselenium.SelectFrame("Nazwa ramki") później już poruszasz się tylko wewnątrz danej ramki i możesz używać nazw linków, przycisków etc. Ewentualnie możesz pokusić się o używanie w testach XPathów. Selenium IDE oferuje możliwość nagrywania testów w języku c# na platformę .NET, które następnie można wrzucić do VS 2005 i odpowiednio modelować. Pytanie jak odtwarzać takie testy, najlepiej przy wykorzystaniu Selenium RC?? Jedyny opisany tutaj sposób oferuję odtwarzanie testów nagranych / napisanych w standardowym html co nie jest specjalnie wygodne, zwłaszcza jeśli chodzi o wielokrotne wykorzystanie kodu i generowanie losowych danych wejściowych. Musisz mieć aplikację postawioną w tej samej lokalizacji co selenium-server. Ściągasz sobie selenium-server.jar ze strony selenium (google it). wrzucasz do katalogu np. vendor w aplikacji. wchodzisz do tego katalogu i odpalasz server - w kosoli: Kod: Zaznacz całyjava -jar selenium-server.jar To powinno wystarczyć (tzn. prawie zawsze działa). Teraz wchodzisz do katalogu aplikacji i odpalasz skrypt z testem, w zależności od języka np w Ruby jest to: Kod: Zaznacz całyruby ./tests/selenium/nazwa_pliku.rb streser - 20 sie 2010, o 09:37 Mój problem: 1. tworzę test w IDE który polega na dodaniu czegoś do listy. Wszystko jest ok element zostaje dodany. 2. ten sam test odpalam na RC (PHP). Test przechodzi wszystko jest ok jednak element nie zostaje dodany (nie ma go na liscie) Czemu po teście nr 2 nie dodaje się element? Możesz podać więcej szczegółów? Albo przekleić kod testu? (tabelka z IDE i PHP) Gość - 2 wrz 2010, o 11:06 Witam. mam takie pytanie: Używam pakietu selenium w połączeniu z eclipsem. Przeprowadzając test przykładowy uruchamiam strone poczty np. na onecie i kolejne sekwencje się wykonują, aż dochodzę do momentu, gdy Selenium ma nacisnąć przycisk już po zalogowaniu do poczty. Chodzi o to, że strona jeszcze się nie zdążyła załadaować i to się powtarza na wielu innych stronach. Komenda waitforpagetoload nie działa a pozatym przy testach automatycznych wydaje mi się bez sensu celowe ich opóźnianie - tam się podaje delay. Tak samo polecenie waitforallbuttons, waitforallfields nie daje pożądanego efektu. Sytuacja ta dotyczy zarówno IDE pod FF jak i RC z pod eclipsa. Poniżej wklejam oba źródła: HTML: Kod: Zaznacz cały<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head profile="http://selenium-ide.openqa.org/profiles/test-case"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="selenium.base" href="http://www.onet.pl" /> <title>poczta</title> </head> <body> <table cellpadding="1" cellspacing="1" border="1"> <thead> <tr><td rowspan="1" colspan="3">poczta</td></tr> </thead><tbody> <tr> <td>open</td> <td>poczta</td> <td></td> </tr> <tr> <td>type</td> <td>e</td> <td></td> </tr> <tr> <td>type</td> <td>e</td> <td>a@vp.pl</td> </tr> <tr> <td>type</td> <td>p</td> <td>pass</td> </tr> <tr> <td>clickAndWait</td> <td>xpath=/html/body/div/form/div[3]/div/div[2]/div/div[9]/input</td> <td></td> </tr> <tr> <td>waitForPageToLoad</td> <td></td> <td></td> </tr> <tr> <td>clickAndWait</td> <td>xpath=/html/body/div/table/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/a/span/span</td> <td></td> </tr> <tr> <td>waitForAllFields</td> <td></td> <td></td> </tr> <tr> <td>type</td> <td>txtmailto</td> <td>a@vp.pl</td> </tr> <tr> <td>type</td> <td>subject</td> <td>Selenium test</td> </tr> <tr> <td>click</td> <td>idSend2</td> <td></td> </tr> <tr> <td>click</td> <td>Zamknij okno</td> <td></td> </tr> <tr> <td>click</td> <td>xpath=/html/body/div/div/div[2]/a[4]</td> <td></td> </tr> </tbody></table> </body> </html> Java: Kod: Zaznacz całypackage com.example.tests; import com.thoughtworks.selenium.*; import java.util.regex.Pattern; public class poczta extends SeleneseTestCase { public void setUp() throws Exception { setUp("http://www.onet.pl", "*chrome"); } public void testPoczta() throws Exception { selenium.open("poczta"); selenium.type("e", ""); selenium.type("e", "a@vp.pl"); selenium.type("p", "pass"); selenium.click("xpath=/html/body/div/form/div[3]/div/div[2]/div/div[9]/input"); selenium.waitForPageToLoad("30000"); selenium.waitForPageToLoad(""); selenium.click("xpath=/html/body/div/table/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/a/span/span"); selenium.waitForPageToLoad("30000"); for (int second = 0;; second++) { if (second >= 60) fail("timeout"); try { if ("".equals(join(selenium.getAllFields(), ','))) break; } catch (Exception e) {} Thread.sleep(1000); } selenium.type("txtmailto", "a@vp.pl"); selenium.type("subject", "Selenium test"); selenium.click("idSend2"); selenium.click("Zamknij okno"); selenium.click("xpath=/html/body/div/div/div[2]/a[4]"); } } Być może coś źle robię, bardzo proszę o jakieś rozwiązanie. Z góry wielkie dzięki PS. oczywiście dane do maila są teraz przypadkowe i raczej nie zadziałają dominik.jeziorski - 6 paź 2010, o 21:28 Dodaj sobie jakiś waitfor text/label i po sprawie. Jak ci się tekst pojawi to test pójdzie dalej.
|