Testowanie aplikacji webowych różnymi przeglądarkami za pomocą Selenium
Selenium służy do testowania aplikacji webowych. Bez problemu odpalimy webdriver Firefoksa. A co jeśli chcemy testować inną przeglądarką? Dla przykładu chcemy by Selenium odwiedziło podany adres URL i zrobił zrzut ekranu. W tym artykule pokażę jak skonfigurować różne webdrivery dla Selenium pod Pythonem na Linuksie.
Nasz startowy kod dla Firefoksa wygląda następująco:from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.google.com')
browser.save_screenshot('screen.png')
browser.quit()
Po zainstalowaniu poprzez pip selenium nie powinniśmy potrzebować nic więcej (poza obecnością Firefoksa w systemie).
Android
W przypadku Androida potrzebować będziemy SDK. Do testów można użyć emulatora lub urządzenie z Androidem na pokładzie. Zaczynamy od pobrania android-server-*.apk i zainstalowaniu go na urządzeniu. Dla emulatora posłużymy się adb z SDK, a dla urządzeń - wrzuć APK na komórkę i zainstaluj (można też użyć adb po podłączeniu urządzenia do komputera).
adb znajdziemy w katalogu platform-tools. Na początek musimy sprawdzić dostępne systemy/urządzenia:
W przypadku urządzenia podłączonego do komputera trzeba zrobić to samo. Druga opcja to podanie w Selenium adresu IP urządzenia (wewnętrznego adresu z tej samej sieci).

from selenium import webdriver
desired_capabilities = webdriver.DesiredCapabilities.ANDROID
desired_capabilities['deviceOrientation'] = 'landscape' #portrait
browser = webdriver.Remote("http://localhost:8080/wd/hub", desired_capabilities=desired_capabilities)
browser.get('http://www.google.com')
browser.save_screenshot('screen_android.png')
browser.quit()
Chromium i Chrome
Pod Linuksem powszechnie używane jest Chromium a nie Chrome. W przypadku Ubuntu i pochodnych mamy gotowy pakiet chromium-chromedriver. Po jego instalacji wystarczy podać ścieżkę do pliku chromedriver:from selenium import webdriver
browser = webdriver.Chrome(executable_path='/usr/lib/chromium-browser/chromedriver')
browser.get('http://www.google.com/')
browser.save_screenshot('screen_chromium.png')
browser.quit()
Jeż mamy zainstalowane Chrome to możemy pobrać chromedriver, rozpakować i podać ścieżkę do tego pliku. Wtedy testować będziemy poprzez chrome a nie chromium.
Opera
Webdrivera Opery nie udało mi się odpalić na Xubuntu - server selenium się wysypywał. Przepis jest prosty. Pobieramy selenium-server-standalone-*.jar i w konsoli ustwiamy ścieżkę do tego pliku pod zmienną SELENIUM_SERVER_JAR:
from selenium import webdriver
browser = webdriver.Opera()
browser.get('http://www.google.com')
browser.save_screenshot('screen_opera.png')
browser.quit()
Webdriver ten powinien także obsługiwać mobilną Operę. U mnie po instalacji PhantoJS próbuje się uruchomić, ale w pewnym momencie rzuca wyjątkami i koniec zabawy.
iOS - iPad, iPod, iPhone
Niestety nawet z urządzeniem webdriver dla iOS działa tylko pod iOS. Nie da się tego (nie znalazłem) w żaden sposób uruchomić pod innym systemem operacyjnym. Dla chętnych opis webdriver ios.
Jeżeli nie chcemy bawić się z OSX, XCODE i kontem developerskim dla iOSa to można skorzystać z (płatnych) usług testowania poprzez Selenium - takich jak saucelabs.com, czy testingbot.com.
Comment article