Selenium WebDriver dodawanie pluginów na przykładzie AdBlocka

Selenium WebDriver dodawanie pluginów na przykładzie AdBlocka

Czy mieliście kiedyś wyzywanie sprawdzenia jak wasza strona, zachowuje się z np. AdBlockiem? Dziś chce wam pokazać, że dodanie tej wtyczki jest bardzo proste i praktycznie od zaraz możecie uruchomić z nią wasze testy.

Zaczynamy!

Czego potrzebujemy?

  • Visual Studio 2017
  • Chrome
  • Zainstalowany AdBlock w Chrome

Zaczynamy od znalezienia na naszym dysku AdBlocka. Powinien być on w takiej ścieżce:

C:\\Users\\<NameOfUser>\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Extensions\\<StringOfExtensions>\\<version>

  • <NameOfUser> – Nazwa waszego użytkownika
  • <StringOfExtensions> – ID interesującego nas pluginu
  • <version> – wersja interesującego nas pluginu

Pamiętajcie, że wersja pluginu, jeżeli macie ustawione  aktualizowanie  może się zmieniać i trzeba pamiętać o tym przy projektowaniu testów.

Jak poznać nazwę interesującego nas pluginu do w Chrome?

Jeżeli mamy zainstalowany dany dodatek jest to prosta sprawa.

Wpisujemy w pasek adresu  – chrome://extensions/

Zaznaczamy  checkbox „Developer mode”

 DeveloperMode dla pluginów Chrome

DeveloperMode dla pluginów Chrome

Dzięki temu zacznie być widoczne ID danego dodatku. Dla AdBlocka jest to:

DeveloperMode dla pluginów Chrome

ID (string) pluginu

Przechodzimy do Visual Studio

Stworzyłem projekt typu Class Library.

Dodawanie interesującego nas pluginu na przykładzie AdBlocka

Dodawanie interesującego nas pluginu na przykładzie AdBlocka

Zaczynamy od utworzenia obiektu typu ChromeOptions. Jest to klasa, która pozwala dodawać nam ustawienia, które chcemy dla uruchamianego przez nas ChromeDrivera.

Metoda AddArguments pozwala dodać  listę argumentów, które będą wczytywane wraz z załadowaniem Chrome.exe.  Używamy flagi load-extensions, która pozwala nam załadować plugin, który nas interesuje i nasza przeglądarka zostanie uruchomiona wraz z nim.

Po stworzeniu obiektu klasy ChromeOptions() przekazujemy go do naszego obiektu ChromeDrivera().

Następnie przechodzimy do zarejestrowania naszego obiektu w prostym kontenerze DI dla SpecFlow, nie jest to niezbędne, ale wiem, że często poszukujecie bardziej realnych przykładów na Context Injection w SpecFlow więc ten przykład również może pomóc wam zrozumieć idee.

Dodałem również klasę SeleniumHelper, która zawiera przydatną metodę CloseSecondTabFromPlugin(). AdBlock po dodaniu prezentuje swoją stroną na, które możemy dokonać dotacji dla nich. Potrzebujemy zamknać tą stronę.

W linijce [18] korzystamy z klasy WaitHelper, która ma zaimplementowane dynamiczne czekanie na zadany element dlatego, że korzysta z klasy WebDriverWait.

W tym przypadku czekamy maksymalnie 15 sekund (lub mniej, jeżeli jest element możliwy do znalezienia w krótszym czasie), na wczytanie się właściwości driver.WindowsHandles, która przechowuje informacje o oknach ChromeDriver’a.

Klasa WaitHelper z metodę Wait(), która zwraca obiekt typu WebDriverWait

 

ChromeDriver wraz z AdBlockiem

ChromeDriver wraz z AdBlockiem

Przykład również dostępny jest na moim GitHubie:

https://github.com/testingplusme/AddAdblockExampleToChromeDriver

Podsumowanie

Jak widzie w kilka minut jesteśmy w stanie uruchomić naszego ChromeDrivera z dodanym pluginem – takim jakim chcemy. Może być to dla was przydatne dla sprawdzenia, czy wszystkie elementy na stronie zachowują się prawidłowo również z dodanym AdBlockiem. Zdarza się, że AdBlock źle sklasyfikuje określony elementem. Innym scenariuszem jest sprawdzenie, jeżeli jesteście np. wydawcą treści czy skrypt, która macie do blokowania AdBlocka wyświetla się zawsze, wtedy kiedy powinien.

 

Github student pack – Jeżeli jesteś studentem lub uczniem, to warto skorzystać.

Github student pack — Jeżeli jesteś studentem lub uczniem, to warto skorzystać.

Witajcie.

Studenci oraz osoby, które zaczynają swoją przygodę z IT, często pytają mnie m.in.: Jakich narzędzi używać? Jaki hosting git’a wybrać żeby kod nie był publiczny?

Dziś chcę właśnie przedstawić jedną z możliwości — jest nią github student pack.

Jest to inicjatywa GitHub’a, którą uruchomił w 2014 roku. Polega ona na tym, że kilkanaście firm, z których produktów na co dzień korzystają developerzy, udostępnia pomoce, które pomogą w starcie studentom/uczniom. Do inicjatywy dołączył m.in. Microsoft, Amazon, DigitalOcean. Dzięki temu studenci i uczniowie mogą uczyć się narzędzi uznanych dostawców technologii  za darmo (można postawić m.in. serwer vps lub CI na Travis CI oraz prywatne repozytorium na GitHubie).

Co zawiera student developer pack?

Student developer pack zawiera zbiór kilku narzędzi/dostępów/pomocy udostępnionych przez firmy, które zajmują się tworzeniem narzędzi, usług dla programistów. Przykładowymi korzyściami, które płyną z pozyskania tego dostępu, jest np. 50$, które pozwala na 10 miesięcy darmowego serwera VPS w najtańszym pakiecie lub 5 miesięcy mocniejszej maszyny. Jest to okres, w którym można (jeżeli jest się zaangażowanym) poznać dobre podstawy administrowania VPS, stawiania usług. DigitalOcena jest jednym z najlepszych dostawców serwerów VPS na świecie (jego klientami są m.in. Atlassian i Ericsson).

Lista wszystkich korzyści https://education.github.com/pack. Jest ich więcej niż te, które wymieniłem w tym wpisie. Polecam zaznajomić się z innymi.

github student pack

 

chrome_2017-04-04_20-53-54

Przykładowe korzyści

chrome_2017-04-04_20-54-01

Przykładowe korzyści

W jaki sposób zdobyć dostęp?

Trzeba być studentem lub uczniem, więc jeżeli spełniasz ten warunek, to załóż konto na github.com. Następnie zaloguj się, a GitHub w kolejnym kroku zweryfikuje czy jesteś studentem/uczniem.

Istnieją dwie możliwości weryfikacji:

  • mail w domenie .edu
  • dokument potwierdzający, że się uczysz (np. legitymacja szkolna/studencka)

Jeżeli posiadacie mail studencki w domenie .edu, to weryfikacja przebiega błyskawicznie. Jeżeli chodzicie np. do liceum i wysłaliście zdjęcie/skan swojej legitymacji uczniowskiej, to weryfikacja potrwa kilka dni.

Podsumowanie

Kolejny raz przedstawiam uczniom i studentom przydatne sposoby, dzięki którym mogą poznawać narzędzia, których używa się komercyjnie. Chcę, żeby wiedza o pomocach dla uczniów i studentów była łatwo dostępna. W kolejnym wpisie wrócę do tematu CodeceptJS i opiszę, w jaki sposób korzystać z page object pattern w tym frameworku.

 

R# za darmo? Dla studentów i uczniów oraz inne oprogramowanie

R# za darmo? Dla studentów i uczniów

Czy znacie może firmę JetBrains? Jeśli nie, to jest to firma tworząca jedne z najlepszych środowisk do wytwarzania oprogramowania (IDE) oraz wtyczki do tych środowisk takie jak m.in. R#. Są to narzędzia dla najbardziej popularnych języków programowania m.in. C#, Java, Python, CSS, JS, Ruby.

Każdy kto rozpoczął już swoją przygodę z testowaniem automatycznym lub programowaniem mógł już słyszeć o JetBrains oraz ich produktach. Jeżeli nie to tym bardziej zachęcam do przeczytania wpisu, by móc się zapoznać z owymi narzędziami. Jeżeli tak jak ja chcecie tworzyć/tworzycie testy w C# to zachęcam do zapoznania się z wpisem Maćka Aniserowicza:

http://devstyle.pl/2008/04/27/c-via-r-czyli-11-powodow-do-uzywania-resharpera-part-i/

W skrócie R# pomaga m.in. w :

  • Refaktoryzacji kodu, robi się to szybciej i przyjemniej
  • Korzystania z testów (korzystających z popularnych runnerów np. NUnit)

Dziś chce przedstawić w jaki sposób zdobyć licencję firmy JetBrains za darmo do celów edukacyjnych.

Zaczynamy?

Przechodzimy do https://www.jetbrains.com/student/ następnie klikamy w „Apply Now”

Ukazuję się taka strona:

R# za darmo

Gdy dołączymy przez ten formularz możemy korzystać z R# oraz innych środowisk/pluginów:

chrome_2017-03-10_21-01-52

3 sposoby do uzyskania dostępu dla studenta/ucznia:

  • Jako student możemy zgłosić się za pomocą adresu mail z domeną .edu
  • Jako uczeń możemy załączyć skan naszej legitymacji z krótkim opisem
  • Za pomocą karty ISIC

 

Co jeżeli nie jesteś studentem?

Możliwości uzyskania R#/InteliJ są przynajmniej trzy:

  • https://confluence.jetbrains.com/display/ReSharper/ReSharper+Early+Access+Program
  • Okres testowy 30 dni
  • Często na różnego rodzaju user grupach np. .NETowych lub Javowych można otrzymać licencję typu personal. JetBrains bardzo mocna stara się wspierać również społeczności.

Oczywiście pamiętajcie, że owe licencje służyć mogą tylko i wyłącznie do celów edukacyjnych.

Podsumowanie

Dziś podzieliłem się z wami możliwością pozyskania narzędzi, których środowiska komercyjne stosują na co dzień.  Jest to drugi wpis na temat zdobywania wiedzy, oprogramowania za darmo. Tymi wpisami chce pokazać wam, że większość ograniczeń możemy pokonywać.