piątek, 6 sierpnia 2010

Selenium - optymalne zakładanie zoptymalizowanych lokat

Z lokat można wycisnąć więcej niż podaje bank! To nie ulega wątpliwościom i sam sprawdziłem, że to rzeczywiście działa. Jeżeli nie wiesz co to jest optymalizacja lokat przeczytaj na przykład to:

Jak wiemy, aby coś zarobić na zaokrąglaniu kwot odsetek trzeba się narobić! W ekstremalnych przypadkach, powiedzmy kiedy posiadamy znaczną gotówkę, albo minimalna kwota lokaty jest bardzo mała (np. 50zł - wtedy można naprawdę poszaleć z optymalizacją), rzeczywiście należałoby założyć kilkadziesiąt lokat lub kont oszczędnościowych. Jak sobie pomóc?

Jeżeli ktoś się czuje dobry z programowania, można pokusić się o napisanie skryptu, który założy za nas kilkadziesiąt, lub kilkaset lokat, czy też kont. Można też prościej - są gotowe rozwiązania! Trochę pogrzebałem i znalazłem wtyczkę Selenium IDE do Firefoxa. Instalacja jest bardzo prosta więc nie będę jej opisywał.

Co to jest Selenium? Jest to framework do testowania aplikacji webowych. No tak, ale my chcieliśmy przecież automatyzować a nie testować. Wszystko da się zrobić. Ważne, że test Selenium potrafi klikać po aplikacji webowej, uzupełniać pola formularzy, wybierać wartości z list rozwijanych i wiele innych przydatnych tricków.

Właśnie chciałem założyć sobie 15 lokat w Open Finance na moim nowym koncie. Niby 15 lokat to nie jest specjalnie dużo klikania, ale kiedy zajdzie potrzeba założenia 100 lokat, to już pewna pomoc się przyda. Jak do klikania zagonić Selenium? Trzeba nagrać odpowiedni test a później patrzeć jak zakładają się Twoje lokaty popijając sobie kawkę;]

Zaczynamy więc! Po zainstalowaniu wtyczki Selenium IDE do Firefoxa możemy ją uruchomić z menu Narzędzia/Selenium IDE. Domyślnie wtyczka zaczyna od razu nagrywać test. Teraz pozostaje nam wyklikać zakładanie jednej nowej lokaty:)
Ja jednak zacząłem nagrywać swój test tak. Zalogowałem się. Wszedłem na stronę Lokaty i kliknąłem w 'Załóż lokatę'. Teraz dopiero włączyłem wtyczkę i zacząłem nagrywać test. Przycisk nagrywania jest wciśnięty. Klikam w 'Załóż' przy odpowiedniej lokacie.


..I tak dalej.. Klikam sobie przechodząc formularz, wypełniam pola i wybieram interesujące mnie opcje. W zakładce 'Table' we wtyczce pojawiają się kolejne wiersze odpowiadające operacjom, które wykonuję.




Przechodzę przez formularz do końca i wracam do strony, z której startowałem. Kończę nagrywanie testu. Skoro jestem na stronie, z której zaczynałem nagrywanie testu to mogę teraz spróbować go puścić. Klikam we wtyczce przycisk 'Play current test case' i patrzę jak zakłada się moja pierwsza lokata:)

Ale co to? Jakiś błąd i to już na pierwszej stronie! Patrzę w logi wtyczki: "[error] Element depositInternet not found". Dlaczego?


Strona Open Finance jest ładna, kolorowa i (niestety dla nas) ładuje się dynamicznie - z wykorzystaniem Ajaxa. Stąd po naciśnięciu 'Załóż' na pierwszej stronie naszego formularza, druga strona zaczyna się ładować dynamicznie - przy pomocy zapytania Ajax'owego, a nie poprzez odświeżenie całej strony przeglądarki. Wtyczka Selenium niestety o tym nie wie i od razu próbuje wpisać kwotę w pole 'depositInternet' - to jest pole, w którym wpisujemy kwotę lokaty. Tego pola niestety nie znajdziemy w formularzu, bo on się jeszcze nie załadował. Co można zrobić? W Selenium jest komenda waitForElementPresent, które czeka na pojawienie się na stronie jakiegoś komponentu. Klikamy więc prawym przyciskiem w polu kwoty na formularzu i wybieramy z menu 'waitForElementPresent depositInternet'. W tabeli komend pojawia się nowy wiersz. Trzeba go umieścić w odpowiednim miejscu w tabeli komend, czyli przenieść przed komendę 'type', która próbuje wpisać w pole depositInternet kwotę lokaty.

Niestety jeszcze w paru miejscach należy w wyżej opisany sposób poprawić kod wygenerowany przez wtyczkę. Dodatkowo nie zawsze wtyczka poprawnie znajduje elementy i trzeba ręcznie wpisać w pole 'Target', gdzie znajduje się dany komponent. To co wpisujemy w to pole to tak naprawdę zapytanie xpath. Dla kogoś, kto nie miał choć trochę do czynienia z programowaniem, może to być dość trudne zadanie. Ale efekt jest super! A jaka satysfakcja, że założyłem 15 lokat przez15 kliknięć przycisku 'play':)

Podsumowując - dla kogoś, kto nabył już jakąś wprawę w tworzeniu testów, Selenium będzie super narzędziem do wykorzystania tam, gdzie trzeba wiele razy przeklikać ten sam formularz, czyli na przykład przy zakładaniu wielu lokat o optymalnych kwotach. Jest w internecie naprawdę wiele tutoriali na temat Selenium, xpath'a i sporo fajnych wtyczek do Firefoxa. Zatem zachęcam Was do automatyzacji!

7 komentarzy:

  1. Witam, jakie oprocentowanie netto byłeś w stanie wycisnąć dzięki tej optymalizacji?

    OdpowiedzUsuń
  2. Witaj! Jeżeli podzielisz lokatę na paczki po 547,5zl otrzymasz dziennie 7,5 grosza, które jest zaokrąglone do 8 groszy dziennie. Daje to więc 5,33% w skali roku. Sprawdziłem i działa na moim koncie w Open Finance. Pozdrawiam;]

    OdpowiedzUsuń
  3. Dzięki za info. Niedawno przelałem 123 zł do Open Finance i tam otworzyłem 3 rachunki oszczędzajace, na każdy wpłacając 41 zł. Codziennie na każdym rachunki naliczany jest 1 grosz odsetek, co przy tej kwocie daje opcocentowanie netto 8,9%. Szkda tylko że nie ma opcji by więcej ulokować w ten sposób...

    P.S. Proponuję wyłączyć hasła z obrazka.

    OdpowiedzUsuń
  4. Przy małym kapitale rzeczywiście fajna stopa zwrotu. Pytanie jak taką uzyskać z większej kasy? ;]

    P.S. Wyłączyłem obrazkową weryfikację. Nie zwracałem na to uwagi, bo jako autor nie musiałem się weryfikować. Dzięki za info!

    OdpowiedzUsuń
  5. Jakaś sumę można by było konkretną uzyskać jakby mieć kilka takich 1gr kont w kilkunastu bankach i gdyby banki nie zmieniały tak często warunków.

    Co sadzisz tomek o wymianie linków?

    OdpowiedzUsuń
  6. @Cashflow88
    Jak dla mnie za dużo zachodu, żeby w paru bankach zakładać konta dla optymalizacji. Jeszcze w jednym banku to rozumiem. Była chyba niedawno taka dziura w BPH zdaje się, że można było zakładać dowolną liczbę kont. Ludzie pozakładali po 300, 400 kont! Wtedy to rzeczywiście ma sens, ale pod warunkiem, że posiłkujesz się jakimś skryptem do zakładania kont, bo nie wyobrażam sobie przeklikania tego ręcznie! A linka już sobie Twojego dodaje. Pozdrawiam!

    OdpowiedzUsuń
  7. Sam w BPH zakładałem 24 konta i zajmowało to ręcznie 30 min.

    OdpowiedzUsuń

Related Posts with Thumbnails