RaspberryPi – selenium nightmares.

I was recently trying to run a selenium script for this startup/project of mine. And guess what.. it was a nightmare. Outdated Repositories, confusing requirements, virtual displays, more outdated/non-supported repos, architecture miss-match and much more shit.

After a day of brainf*ing I finally figured this out so I decided to make a post about it because why not? giving back to community{lol}.

Here’s how to setup selenium on your raspberry pi in 2019 :

Setting up PI (headless method):

  • Download latest raspbian version and Etcher.
  • Using etcher burn the raspbian image onto a 16Gb+ sdCard.
  • After the image writing is complete open the root directory.
  • Create a new blank file named ssh (without extension).
  • Create a file named wpa_supplicant.conf and add the following to it :
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
  ssid="YOUR-SSID"
  psk="YOUR-PASSWORD"
  scan_ssid=1
}
  • Done. Eject SD Card and shove it into the pi.
  • Boot the pi and use a network monitor(my fav. is fing) to find out the local ip address of pi.
  • SHH into the pi using ssh pi@<ipAddress> command.
  • Update the repositories using sudo apt-get update .

Installing required repositories :

It is very crucial to download the versions of repos I specifically mention because some of them are out of support ,some are built for different architectures and some are not cross compatible.

sudo apt-get install iceweasel

sudo apt-get install xvfb

sudo apt-get install xserver-xephyr

sudo pip3 install selenium==2.53.6

sudo pip3 install pyvirtualdisplay

sudo pip3 install pytest

wget https://github.com/mozilla/geckodriver/releases/download/v0.19.1/geckodriver-v0.19.1-arm7hf.tar.gz

tar -xf geckodriver-v0.19.1-arm7hf.tar.gz

rm geckodriver-v0.19.1-arm7hf.tar.gz

sudo chmod a+x geckodriver

sudo mv geckodriver /usr/local/bin/

Sample test program :

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

profile = webdriver.FirefoxProfile()
driver = webdriver.Firefox(profile)

driver.get("http://www.binarymanaic.com")

print(driver.title)

driver.quit()