Many of us use Python Selenium to do functional testing of our websites or web applications. We generally test against Firefox and Google Chrome browser on the desktop. But, there is also a lot of people who uses Tor Browser (from Tor Project) to browse the internet and access the web applications.
In this post we will see how can we use the Tor Browser along with Selenium for our testing.
Setting up the environment
First step is to download and verify, and then extract the Tor Browser somewhere in your system. Next, download and extract geckodriver 0.17.0 somewhere in the path. For the current series of Tor Browsers, you will need this particular version of the geckodriver.
We will use pipenv to create the Python virtualenv and also to install the dependencies.
$ mkdir tortests $ cd tortests $ pipenv install selenium tbselenium $ pipenv shell
The tor-browser-selenium is Python library required for Tor Browser Selenium tests.
import unittest from time import sleep from tbselenium.tbdriver import TorBrowserDriver class TestSite(unittest.TestCase): def setUp(self): # Point the path to the tor-browser_en-US directory in your system tbpath = '/home/kdas/.local/tbb/tor-browser_en-US/' self.driver = TorBrowserDriver(tbpath, tbb_logfile_path='test.log') self.url = "https://check.torproject.org" def tearDown(self): # We want the browser to close at the end of each test. self.driver.close() def test_available(self): self.driver.load_url(self.url) # Find the element for success element = self.driver.find_element_by_class_name('on') self.assertEqual(str.strip(element.text), "Congratulations. This browser is configured to use Tor.") sleep(2) # So that we can see the page if __name__ == '__main__': unittest.main()
In the above example, we are connecting to the https://check.torproject.org and
making sure that it informs we are connected over Tor. The
tbpath variable in
setUp method contains the path to the Tor Browser in my system.
You can find many other examples in the source repository.
Please make sure that you test web application against Tor Browser, having more applications which can run smoothly on top of the Tor Browser will be a great help for the community.