Znaleźć najlepsza ofertę usługi – prosta sprawa 🙂 ! Nie dla dociekliwego testera, który lubi ułatwiać sobie życie… 😀
Jak skończyłem na grzebaniu w konsoli przeglądarki, bo potrzebowałem umówić gazownika… co z tego wynikło?
Zapraszam do krótkiego artykułu.
Geneza
Wiemy, że automatyzacja zajmie zazwyczaj więcej czasu niż manualne wykonanie jakiegoś zadania, niemniej zabawa i skill jaki się przy tym rozwija zachęcają do niekonwencjonalnych rozwiązań. Przede wszystkim późniejsze wykonanie tego samego zadania zajmie nam tylko tylko chwilę.
Tak było i ze mną gdy napotkałem na swojej drodze
proste wyzwanie.
Miałem obdzwonić wiele punktów serwisowych (gaz to nie przelewki) po to, aby wybrać najlepszą ofertę. Jako, że producent wymusza autoryzowanych serwisantów, skorzystałem ze strony z wyszukiwarką takowych:
http://dealersearch.junkers.pl/pl/installer
I tu zaczęła się moja przygoda…
Telefon do gazownika – nie taki łatwy do skopiowania
Po wyszukaniu listy serwisantów postanowiłem przerzucić ich dane do mojego narzędzia do zarządzania zadaniami, aby łatwiej aktualizować moje działania.
Niestety – telefony są dość dziwnie dostępne – trzeba wybierać serwisanta i dopiero można na mapce z prawej zobaczyć niekopiowalny numer telefonu 🙁 LOL i tak dla każdego….
Enough!
Śmiało wcisnąłem F12 aby wywołać Opcje deweloperskie.
Zlokalizowanie gazownika
Wybrałem pierwszego gazownika z listy, kliknąłem prawym myszki i wybrałem opcję Zbadaj element
.
Nieźle, jest nazwa, którą mogę skorelować z numerem telefonu. Następnie poczyniłem takie kroki:
- Skopiowałem XPath ze wskazanego elementu (prawy klawisz myszki -> kopiuj -> Xpath)
- W konsoli wrzuciłem go do wyrażenia wyszukującego element
$x('')
. Jest element został znaleziony 😀 - Potem wyłuskałem sam tekst dodając na końcu XPath
/text()
Dobra, nie jest to nic nadzwyczajnego… ale jakby tak pobrać listę wszystkich osobników z mojego wyszukiwania? Nic prostszego – wiedząc jak działają listy w HTML analogicznie podchodze do tabelek (dla dociekliwych kod HTML tabeli). Zmieniłem część wskazującą na dany rząd wyglądającą tak: tr[3]
, na taką co weźmie pod uwagę wszystkie rzędy czyli tr
. Wynik tej operacji wyglądał tak (ze wskazaniem na zmianę)
Jest pro – mam listę gazowników.
Ukryte telefony
Tym razem skorzystałem z wyszukiwarki w kodzie HTML
Szybko zlokalizowałem numer telefonu dla pierwszego gazownika. Skopiowałem XPath a następnie wrzuciłem go tak jak poprzednio w konsolę opakowanego w $x('')
. Oczywiście trik z usunięciem wartości po tr
też się sprawdził i oto mam listę telefonów:
Połączenie znalezisk
Warto to jakoś ładnie wyprintować – znalezionych osobników i numery telefonów.
1 i 2 – najpierw przypisałem znaleziska do zmiennych.
3 – znając pętlę for
z Pythona napisałem bardzo podobną w JS. W ciele for
użyłem funkcji printującej czyli console.log
. Okazało się, że pobranie elementu z listy jeszcze nie dawało pożądanego rezultatu i trzeba było z każdego obiektu wyłuskać tekst, który krył się w atrybucie data
, czyli names[i].data
i analogicznie dla listy numerów.
Czyszczenie wyniku
Skopiowany tekst z konsoli szybko przeczyściłem w Notepad++.
Teraz tekst już był gotowy do stworzenia mojej listy imion i telefonów.
Kolejna lista – już bardziej ludzka i interaktywana
Wystarczyło teraz tylko skopiować tekst i wrzucić do mojego narzędzia z zadaniami Trello (gif zaczyna się od kopiowania listy z Notepad++)
Mając taką listę mogłem bezpośrednio w telefonie wybierać numery z każdego wiersza i dzwonić.
Czy to ma sens? 10 numerów przepisałbyś szybciej Przemek?!
Zapewne manualnie byłoby szybciej. Może… W moimi oryginalnym wyszukiwaniu miałem ok 40 rekordów , a to już sporo.
Od razu uzyskałem bezbłędnie powiązane numery i nazwiska w Trello wraz z automatycznie stworzoną listą.
Teraz mogę łatwo dzwonić i uaktualnić wpisy (kto, kiedy i za ile) oraz udostępniać moje działania 😀
Przy okazji miałem świetną zabawę śmigając po konsoli 😀
Teraz Ty
W ramach rozrywki proponujemy automatyzację tego zadania w Pythonie. Śmiało napisz taki skrypt i zobacz czy to dla Ciebie działa. Jeśli napotkasz problemy wtedy uaktualnie ten wpis o pythonową wersja rozwiązania 🙂
Podsumowanie
Mam nadzieją, że w przyszłości też wykorzystasz wiedzę z naszych kursów do tak niekonwencjonalnych pomysłów – podziel się nimi gdyż w jaktestowac.pl lubimy takie tricki 🙂
Miłej zabawy i odkrywania webowego świata!
Czy chciałbyś więcej tego typu treści – takiego testerskiego lifehackingu? Napisz w komentarzu 😛