ChromeDriverin ja Geckodriverin-asennusohjeet
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ä.