Aktywne Wpisy

ZygmuntJedyny +542
źródło: temp_file4764556946629765336
Pobierz
bibi__ +244
Jako iż jestem już posiadaczką afly, szczęśliwa czy nie to się okaże za jakiś czas XD to chcę się pochwalić moją kobyłką (。◕‿‿◕。)
#motoryzacja #alfaromeo #alfaholicy
#motoryzacja #alfaromeo #alfaholicy
źródło: image_picker_244775A4-3602-4287-AF82-FE42790BC9AA-51464-0000188A9CBB5B2F
Pobierz




Zapraszam zatem do lektury osoby zainteresowane #testowanieoprogramowania, ale również tych, którzy po prostu chcą konstruktywnie spędzić zimowy wieczór podczas kwarantanny i nauczyć się podstaw automatyzacji. Przy okazji liźniemy tematy związane z #programowanie w #python, może kiedyś #javascript, zobaczymy jak się to potoczy. Kurs będzie od podstaw, więc nie zdziwcie się, jeśli spotkacie oczywiste dla was rzeczy, ale celem jest pokazanie, że ogarnięta Pani Krysia z HR też może pisać automaty, nie mając pojęcia ani nie potrzebując żadnych klas, metod, obiektów, interfejsów, isków ani dupiksów. (chociaż ja wie co to jest, to może korzystać z ich dobrodziejstw)
Zaczniemy od instalacji niezbędnego oprogramowania i napiszemy proste zadanie, które zautomatyzuje jakąś stronę, w naszym przypadku: zaobserwujemy tag na wykopie. Do dzieła zatem!
1. Instalacja:
Dziś będziemy automatyzować przeglądarkę, więc jakąś musimy mieć. Załozyłem sobie chrome, bo prawdopodobnie wielu z was ma to już w systemie. Jeśli nie – instalujemy sobie chrome, czy chromium jeśli ktoś woli, a potem:
- windows/macos: ściągamy pythona (jakiegoś z gałęzi 3) i instalujemy pythona: https://www.python.org/downloads/
ważne, by podczas instalacji zaznaczyć opcję instalacji pip oraz dodanie tego do PATH; linux – używamy naszego menedżera pakietów (zakładam, że jak ktoś ma linuxa, to umie z niego korzystać, więc instalacja nie powinna mu nastręczać problemów, ale tak dla przyzwoitości, dla debianopochodnych wpisujemy sudo apt-get install python3 python3-pip)
- odpalamy czarne okienko: w windows: naciskamy przyciski Win+R, wpisujemy cmd albo powershell i dajemy Enter, w linuxie i MacOS odpalamy jakiś Terminal.
- wpsiujemy:
python --versionpowinniśmy zobaczyć info o wersji, którą zainstalowaliśmy, analogicznie wpisujemy
pip --versionjeśli pokaże się informacja, że nie mamy takich programów, polecam spróbować python3 zamiast python, oraz pip3 zamiast pip, bo różnie się zdarza, szczególnie na linuxach...
- teraz zainstalujemy sobie paczki pythona, które wydzielą nam wyizolowane środowisko dla naszego kursu. Krok ten nie jest niezbędny, ale jak da się coś odizolować, to lepiej to zrobić. Unikniemy przykrych niespodzianek, kiedy to zaktualizujemy jakąś paczkę i coś posypie się w innym miejscu, zatem:
- dla windows, wpisujemy w czarne okienko:
pip install virtualenvwrapper-win virtualenvdla linux
pip install virtualenvwrapper virtualenvdodatkowo dla linuxa (dla MacOS nie pamiętem, ale możliwe, że też) trzeba wyedytować plik ~/.bashprofile i dodać w nim następujące linijki:
VIRTUALENVWRAPPER_PYTHON=$(which /usr/bin/python3)source $(which virtualenvwrapper.sh)
a następnie wpiasać:
source ~/.bash_profileOd tego momentu, wszystkie komendy będą wyglądać na każdym systemie operacyjnym tak samo, no chyba, że wyraźnie podkreślę, że jest inaczej.
-wpisujemy (kursrf w komendzie poniżej, to po prostu nazwa, jak macie życzenie, to swoje środowisko możecie nazwać na przykład pszemek):
mkvirtualenv -p3 kursrfcoś tam może się wyświetlić, jakieś dodatkowe okienka mogą się pojawiać i znikać, grunt żeby na końcu otrzymać znak zachęty wyglądający z grubsza tak:
(kursrf) henk@HENK:~$albo
(kursrf) C:\Users\henk>Ujęta w nawiasy nazwa kursrobotframework to nazwa virtualnego środowiska python, o którym wspominałem wcześniej i które to zapewnia nam izolację od reszty systemu.
Jeśli chcemy wyjść z tego środowiska, wpisujemy:
deactivateNo, ale my chcemy być w tym środowisku, bo jakbyśmy nie chcieli, to bym się nie produkował tyle, żeby to opisać, więc wpisujemy:
workon kursrfTeraz mały trick – (większość pewnie zna, ale) to powyżej to sporo pisania, a my jesteśmy leniwi, więc wystarczy zacząć wpisywać: workon ku i nacisnąć tabulator – powłoka podpowie nam nazwy środowisk, które mamy, a po wpisaniu samego workon zobaczymy listę wszystkich środowisk, które stworzyliśmy.
No dobra, to skoro jesteśmy już wewnątrz środowiska, możemy zacząć instalować w nim upragnione przez nas paczki. Tak na dobrą sprawę, to jeśli ktoś wie co robi i nie chce się bawić ze środowiskami wirtualnymi, to może zacząć od tego momentu. Zaczynamy wpisywać komendy (webdrivermanager – nie mylić z webdriver-manager):
pip install robotframework robotframework-seleniumlibrary webdrivermanagerJak skończy się instalować, wpisujemy komendę, która zainstaluje nam tzw. Webdriver, czyli program, który umie sterować naszą przeglądarką. Ponieważ założylismy, że używamy chrome, wpisujemy:
webdrivermanager chromeI sprawdzamy, czy wszystko poszło gładko wpisując:
robot --versionchromedriver --versionTutaj mała dygresja, programiści chromedrivera czy chrome mają gdzieś kompatybilność, więc pewne wersje chrome są kompatybilne tylko z pewnymi wersjami chromedrivera. Więc może się wcześniej, czy później zdarzyć, że podczas automatyzacji przywiata was komunikat, że ta wersja chromedrivera nie działa już z tą wersją chrome (coś takiego: This version of ChromeDriver only supports Chrome version 88) bo wielce prawdopodobne, że wersja chrome wam urośnie, a wasz chromedriver dalej będzie stary. Wtedy instalację webdrivera trzeba będzie powtórzyć. Opis kompatybilności znajdziecie tu: https://chromedriver.chromium.org/downloads
Tutaj kończy się wspaniały etap instalacji, jego wspaniałość polega zasadniczo na tym, że robi się to tylko raz. Teraz przystępujemy do pisania naszego pierwszego testu automatycznego. Wybieramy zatem jakiś katalog, tworzymy w nim plik o nazwie kończącej się rozszerzeniem robot. Na przykład subskrybuj.robot
Można to zrobić z linii komend, albo zwyczajnie otworzyć sobie ulubiony edytor i zapisać plik jako subskrybuj.robot właśnie.
Tu natrafiamy na mały problem organizacyjny. RobotFramewok używa kilku spacji, bądź tabulatora jako separatora, za to wykop ochoczo wycina nadmiarowe spacje, łącząc je w jedną. Dlatego skryptów automatyzujących nie będziecie mogli tak po prostu skopiować z treści tego wpisu, bo spacje w nich zastąpiłem spacjami nierozdzielającymi. RobotFramework z kolei nie za bardzo lubi spacje nierodzielające, więc na potrzeby „wizualizacji” kodu we wpisie będę używał tych spacji nierozdzielających, a wy będziecie musieli to przepisać, albo skorzystać z linków do pastebin, które bądą pod fragmentami kodu.
x x – pomiędzy x jest sześć spacji nierodzielającychy y – pomiędzy y było sześć zwykłych spacji, ale wykop skomasował je w jednązatem nasz plik subskrybuj.robot powinien wyglądać tak
https://0bin.net/paste/CYnMgsxI#GZ2EvDCV3-OcNFgo2qOsfpSHrhBbQQQb0s1fMbkFNv5
*** Settings ***Library SeleniumLibraryLibrary Dialogs*** Variables ***${username} TU_WPISZ_SWÓJ_LOGIN${password} TU_WPISZ_SWOJE_HASŁO*** Test Cases ***Subscribe TagOpen Browser [https://www.wykop.pl/zaloguj/](https://www.wykop.pl/zaloguj/) chromeInput Text (//input[@name='user[username]'])[2] ${username}Input Password (//input[@name='user[password]'])[3] ${password}Click Element //button[text()='Zaloguj się']Execute Manual Step Enter Two Factor authentication code, then click Weryfikuj kod on webpage. \nAfter all click PASS in this window. If you do not use 2FA, just click PASS.Go To [https://www.wykop.pl/tag/kursrobotframework/](https://www.wykop.pl/tag/kursrobotframework/)Run Keyword And Ignore Error Click Element //*[contains(text(), 'obserwuj') and not(contains(text(), 'nie'))]Go to [https://www.wykop.pl/mikroblog/](https://www.wykop.pl/mikroblog/)Element Should Contain (//*[@class='fix-tagline'])[2] kursrobotframeworkTaki oto potworek otwiera przeglądarkę, loguje się na wykop, prosi o podanie kodu 2FA, subskrybuje tag ignorując krok jeśli tag już subskrybujesz, a na koniec sprawdza, czy udało się dodać tag do subskrybowanych.
Nie przejmujcie się na razie jeśli nie rozumiecie wielu magicznych napisów, wyjaśnię je już w następnym odcinku, pokaże jak je ukryć, żeby nie szpeciły kodu oraz omówię jak działa automatyzacja przeglądarki w ogólnym przypadku
Komentarz usunięty przez autora
otóż: będąc w katalogu, gdzie mamy plik subscribe.robot wpisujemy
robot subscribe.robotewentualnie z
Komentarz usunięty przez autora
Co będzie lepsze? Siłą rzeczy będę się skłaniał ku robotowi, bo miałem do czynienia z wieloma językami i frameworkami i na razie nic prostszego niż robot
źródło: comment_1611565163o41lXvDuP3Edjt9WV1kOkc.jpg
PobierzPo drugie rozumiem podejscie BDD czy keyword driven, ale co w sytuacji kiedy musimy nadpisac bazowa metode np findelement zeby na przyklad dolozyc robienie screenshotow przy errorze
- możesz nadpisać domyślne implementacje keywordów
- możesz tworzyć własne keywordy (w ogóle należy przyjąć, że keyword to odpowiednik metody) - i możesz to robić albo tworząc nowy keyword za pomocą istniejących keywordów, albo napisać kawałek kodu w pythonie, czy javascripcie (a nawet bashu, czy javie jak jesteś prawdziwym
C:\Users\xyz>robot pisz.robot'robot' is not recognized as an internal or external command,
operable program or batch file.
zaś po spróbowaniu innej komendy, troche
źródło: comment_1611606286IzTdmwTZAppEgBlroCnZUH.jpg
Pobierzpip freeze(kursrf) C:\Users\damian\OneDrive\Pulpit\katalog>robot pisz.robot[ ERROR ] Suite 'Pisz' contains no tests or tasks.
Jak wygląda twój plik? Minimaln właściwy plik wygląda tak
*** Test Cases