Setup a phantomjs Selenium driverΒΆ

The PhantomJS fixture starts a phantomjs service in the background and exposes it via its webdriver attribute, which can then be used by test cases for Selenium-based assertions:

>>> from fixtures import FakeLogger
>>> from testtools import TestCase
>>> from txfixtures import Reactor, Service, PhantomJS

>>> TWIST_COMMAND = "twistd -n web".split(" ")

>>> class HTTPServerTest(TestCase):
...
...     def setUp(self):
...         super().setUp()
...         self.logger = self.useFixture(FakeLogger())
...         self.useFixture(Reactor())
...
...         # Create a sample web server
...         self.service = Service(TWIST_COMMAND)
...         self.service.expectPort(8080)
...         self.useFixture(self.service)
...
...         self.phantomjs = self.useFixture(PhantomJS())
...
...     def test_home_page(self):
...         self.phantomjs.webdriver.get("http://localhost:8080")
...         self.assertEqual("Twisted Web Demo", self.phantomjs.webdriver.title)

>>> test = HTTPServerTest(methodName="test_home_page")
>>> test.run().wasSuccessful()
True