Typoja materiaalissa

Tee korjausehdotus editoimalla tätä tiedostoa GitHubissa.

Huom: myöhemmin tällä sivulla oleva Geckodriver saattaa olla helpompi asentaa kuin ensin esiteltävä ChromeDriver. Esittelyjärjestys on kuitenkin vielä nykyisenlainen, sillä Geckodriver-ohje lisättiin vasta pe 10.11. ja sen toimivuudesta Windowsilla ei ole vielä havaintoa.

ChromeDriver-asennusohjeet

Jos tietokoneellesi ei ole asennettu Chrome- tai Chromium-selainta, aloita asentamalla sen viimeisin versio täältä. ChromeDriverin käyttöön soveltuu myös Chromium, joka on avoimen lähdekoodin selain, johon Google Chrome pohjautuu. Lataa sen jälkeen käyttöjärjestelmällesi ja Chrome-versiollesi sopiva chromedriver-binääri täältä. Pura ladattu paketti ja noudata sen jälkeen käyttöjärjestelmäkohtaisia ohjeita.

Huom: valitse ChromeDriverista versio joka on yhteensopiva käyttämäsi Chromen version mukaan!

Linkin takana oleva lista on hieman kryptinen. Esim. omassa tapauksessani Chromen versio on Version 118.0.5993.117 (Official Build) (arm64), joten oikea latauslinkki on

macOS ja Linux

Jotta chromedriver-komento toimisi tulee ChromeDriver-binääri siirtää hakemistoon, jonka polku on käyttöjärjestelmän PATH-ympäristömuuttujassa. Helpoin tapa on siirtää binääri /usr/local/bin-hakemistoon. Tämä onnistuu siirtymällä komentorivillä hakemistoon, johon chromedriver-binääri on ladattu ja suorittamalla komento mv chromedriver /usr/local/bin/. Anna tämän jälkeen binäärille suoritusoikeudet komennolla chmod +x /usr/local/bin/chromedriver.

HUOM: Jos binäärin siirtämiselle /usr/local/bin-hakemistoon ei ole oikeuksia, siirry kotihakemistoosi komennolla cd ja luo sinne hakemisto bin (jos sitä ei ole vielä olemassa) komennolla mkdir bin. Siirry nyt hakemistoon, johon chromedriver-binääri on ladattu ja siirrä se luotuun hakemistoon komennolla mv chromedriver $HOME/bin/. Anna tämän jälkeen binäärille suoritusoikeudet komennolla chmod +x $HOME/bin/chromedriver. Lisää lopuksi $HOME/bin-hakemisto PATH-ympäristömuuttujaan komennolla touch $HOME/.bashrc && echo "export PATH=\"\$HOME/bin:\$PATH\"" >> $HOME/.bashrc.

HUOM: Macilla voi olla oletuksena käytössä Zsh-komentotulkki, jolloin yllä olevat muutokset tulee tehdä .zshrc-tiedostoon .bashrc-tiedoston sijaan.

Käynnistä terminaali uudestaan ja varmista asennuksen onnistuminen suorittamalla komento:

chromedriver --version

HUOM: Mac-käyttäjänä saatat törmätä tilanteeseen, jossa ChromeDriverin käynnistys epäonnistuu koska kone ei tiedä että ChromeDriver on luotettavan tahon tekemä ohjelma. Ongelma korjautuu tämän ohjeen avulla.

ArchLinux

ArchLinux-distributiossa chromium-paketin mukana tulee ChromeDriver suoraan. Jos sen sijaan on asennettuna google-chrome Arch User Repositorioista, ChromeDriverin saa chromedriver-paketista.

Windows

Jotta chromedriver-komento toimisi tulee chromedriver-binääri siirtää hakemistoon, jonka polku on käyttöjärjestelmän PATH-ympäristömuuttujassa. Siirrä ensin ladattu chromedriver-binääri haluamaasi hakemistoon (esimerkiks C:\Program Files on yksi potentiaalinen vaihtoehto). Lisää tämän jälkeen hakemiston polku (lisää siis pelkkä hakemiston polku, eli ei tiedoston nimeä polun perään) PATH-ympäristömuuttujaan seuraamalla tätä ohjetta.

Järjestelmä tulee todennäköisesti käynnistää uudelleen, jotta PATH-ympäristömuuttuja päivittyy. Voit tarkistaa PATH-ympäristömuuttujan tilan Powershell-terminaalista suorittamalla komennon $env:PATH, tai Command Prompt-terminaalista komennolla echo %PATH%, ja tarkistamalla löytyykö juuri lisäämäsi polku puolipiste erotellusta luettelosta. Jos polkuasi ei löydy, on uudellenkäynnistys tarpeellinen.

Käynnistä siis tarvittaessa koko järjestelmä tai pelkkä terminaali (PowerShell) uudestaan ja varmista asennuksen onnistuminen suorittamalla komento:

chromedriver --version

Mahdollisia ongelmia

Seuraava virheilmoitus kertoo siitä, että suoritat testejä ilman että sovellus on päällä:

WebDriverException: Message: unknown error: net::ERR_CONNECTION_REFUSED
  (Session info: chrome-headless-shell=126.0.6478.127)
Stacktrace:
0   chromedriver                        0x00000001048c6a0c chromedriver + 4385292
1   chromedriver                        0x00000001048bf318 chromedriver + 4354840
2   chromedriver                        0x00000001044dcb0c chromedriver + 281356
3   chromedriver                        0x00000001044d5e9c chromedriver + 253596
4   chromedriver                        0x00000001044c7a5c chromedriver + 195164
5   chromedriver                        0x00000001044c8e18 chromedriver + 200216
6   chromedriver                        0x00000001044c7d78 chromedriver + 195960
7   chromedriver                        0x00000001044c740c chromedriver + 193548

Testit siis olettavat, että sovellus on käynnissä. Käynnistä siis sovellus yhteen terminaaliin, avaa uusi ja suorita testit siellä.

Windows 10 / WSL2 -käyttäjänä saatat törmätä seuraavaan virheilmoitukseen:

Suite setup failed:
WebDriverException: Message: unknown error: Chrome failed to start: crashed.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Tämä ohje saattaa tuoda ratkaisun.

Yksi lisävaihtoehto WSL käyttäjille on ajaa Web-sovelluksemme serveriä poetryssa WSL:n puolella, ja ajaa selenium/robot-testit poetryssa Windowsin PowerShellin puolella:

  • Asenna Python Windowsille jos se ei ole jo asennettu
  • Asenna Poetry Windowsille suorittamalla PowerShellissä
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
  • Lisää asennuksen päätteksi kerrottu polku esim.C:\Users\<user>\AppData\Roaming\Python\Scripts järjestelmän PATH-muuttujaan äskeisessä ChromeDriver-ohjeessa kerrotulla tavalla
  • Kloonaa projekti Windowsin tiedostojärjestelmän puolelle (löytyy WSL-järjestelmästä /mnt hakemiston alta aivan tiedostojärjestelmän juuresta) esim. työpöydälle /mnt/c/Users/<user>/Desktop
  • Asenna riippuvuudet tavallisesti Poetryssa suorittamalla poetry install juuri kloonatun web-login-hakemiston juuressa
  • Asenna ChromeDriver windowsille äskeisen ohjeen mukaan
  • Aja Selenium/Robot testit web-login-hakemiston juuresta komennolla poetry run robot .\src\tests\

Geckodriver-asennusohjeet

Geckodriverin käyttö edellyttää että koneellesi on asennettuna Firefox.

Lataa käyttöjärjestelmällesi sopiva geckodriver-binääri täältä kohdasta assets. Pura ladattu paketti ja noudata sen jälkeen käyttöjärjestelmäkohtaisia ohjeita.

Linux

Jotta geckodriver-komento toimisi tulee binääritiedosto siirtää hakemistoon, jonka polku on käyttöjärjestelmän PATH-ympäristömuuttujassa. Helpoin tapa on siirtää binääri /usr/local/bin-hakemistoon. Tämä onnistuu siirtymällä komentorivillä hakemistoon, johon geckodriver-binääri on ladattu ja suorittamalla komento mv geckodriver /usr/local/bin/. Anna tämän jälkeen binäärille suoritusoikeudet komennolla chmod +x /usr/local/bin/geckodriver.

HUOM: Jos binäärin siirtämiselle /usr/local/bin-hakemistoon ei ole oikeuksia, siirry kotihakemistoosi komennolla cd ja luo sinne hakemisto bin (jos sitä ei ole vielä olemassa) komennolla mkdir bin. Siirry nyt hakemistoon, johon cgeckodriver-binääri on ladattu ja siirrä se luotuun hakemistoon komennolla mv geckodriver $HOME/bin/. Anna tämän jälkeen binäärille suoritusoikeudet komennolla chmod +x $HOME/bin/geckodriver. Lisää lopuksi $HOME/bin-hakemisto PATH-ympäristömuuttujaan komennolla touch $HOME/.bashrc && echo "export PATH=\"\$HOME/bin:\$PATH\"" >> $HOME/.bashrc.

HUOM: Macilla voi olla oletuksena käytössä Zsh-komentotulkki, jolloin yllä olevat muutokset tulee tehdä .zshrc-tiedostoon .bashrc-tiedoston sijaan.

Käynnistä terminaali uudestaan ja varmista asennuksen onnistuminen suorittamalla komento:

geckodriver --version

Windows

Noudata ChromeDriverin ohjetta soveltuvin osin.

HUOM

Geckodriveriä käytettäessä testit suoritetaan komennolla

robot --variable BROWSER:firefox src/tests 

HUOM2:

Seuraava virheilmoitus kertoo siitä, että suoritat testejä ilman että sovellus on päällä:

WebDriverException: Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//localhost%3A5001/&c=UTF-8&d=Firefox%20can%E2%80%99t%20establish%20a%20connection%20to%20the%20server%20at%20localhost%3A5001.
Stacktrace:
RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:193:5
UnknownError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:832:5
checkReadyState@chrome://remote/content/marionette/navigate.sys.mjs:58:24
onNavigation@chrome://remote/content/marionette/navigate.sys.mjs:330:39
emit@resource://gre/modules/EventEmitter.sys.mjs:148:20

Testit siis olettavat, että sovellus on käynnissä. Käynnistä siis sovellus yhteen terminaaliin, avaa uusi ja suorita testit siellä.