You need to launch a standalone chrome browser
docker run -d -p 4444:4444 selenium/standalone-chrome
and then in your python script launch browser using Remote webdriver
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote("http://127.0.0.1:4444/wd/hub", DesiredCapabilities.CHROME)
If you want you can also launch a Selenium Grid hub.
To do this as a django test do the following:
# docker-compose.yml
selenium:
image: selenium/standalone-firefox
ports:
- 4444:4444
# project/app/test.py
from django.test import TestCase
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class SiteTest(TestCase):
fixtures = [
'app/fixtures/app.json',
...
]
def setUp(self):
self.browser = webdriver.Remote("http://selenium:4444/wd/hub", DesiredCapabilities.FIREFOX)
def tearDown(self):
self.browser.quit()
def test_visit_site(self):
self.browser.get('http://app:8000/')
self.assertIn(self.browser.title, 'Home')
Note:
If you use webdriver.ChromeOptions|FirefoxOptions|etc
then DesiredCapabalities
import is not necessary:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--headless') # example
driver = webdriver.Remote("http://127.0.0.1:4444/wd/hub", options=options)