Ghostly
Lightweight API around Selenium Webdriver and helpers for end to end testing with Django.
This package is alpha, the API will most likely change!
It supports Django 1.6-1.8 for Python versions 2.7, 3.3, 3.4, 3.5 and pypy (where the Django version supports said Python version).
Docs
Available at ghostly.readthedocs.org
Installation
You can install ghostly either via the Python Package Index (PyPI) or from github.
To install using pip;
pip install ghostly
From github;
$ pip install git+https://github.com/alexhayes/ghostly.git
Usage
You can use use this package outside of Django however it has limited use.
Essentially there are two components, as follows;
-
Ghostly
- A lightweight wrapper and helper methods for Selenium Webdriver. Presently it provides a handful of methods that utilise xpath to deal with a page, such asxpath
,xpath_wait
et al. -
GhostlyDjangoTestCase
- A lightweight test case that extends StaticLiveServerTestCase and sets up an instance ofGhostly
. It provides methods such asassertCurrentUrl
,assertXpathEqual
et al.
GhostlyDjangoTestCase
GhostlyDjangoTestCase
inherits StaticLiveServerTestCase and thus fires up
a WSGI server that handles requests.
Given you have a named URL home
with a <h1>Hello World</h1>
visible in
the source, you can do the following;
class MyTestCase(GhostlyDjangoTestCase):
def test_homepage(self):
self.goto(reverse('home'))
# Assert that an element is equal to something
self.assertXpathEqual('//h1', 'Hello World')
# Assert the current url, relative or absolute
self.assertCurrentUrl('/home')
Working with SVG
To traverse SVG with Selenium web driver you must use xpath.
class MyTestCase(GhostlyDjangoTestCase):
def test_homepage(self):
self.goto(reverse('home'))
# Click on an element, or example, in an SVG.
self.ghostly.xpath_click('//*[@id="refresh"]')
# Assert that an Xpath is equal to something
self.assertXpathEqual('//h2', 'Hello World')
# Wait for xpath to exist
self.ghostly.xpath_wait('//div[@id="something"]')
History
This package started out as a simple way to construct browser tests using YAML, written by Brenton Cleeland.
The focus of this fork is to allow the developer to write programmatic unit tests in the style of unittest.
Currently this fork does not contain any of the CSS selector style methods that were originally available as the focus has been on xpath only support until a more robust CSS selector toolkit can be provided.
License
This software is licensed under the MIT License. See the LICENSE
file in the top distribution directory for the full license text.
Author
- Alex Hayes <alex@commoncode.com>
- Brenton Cleeland <brenton@commoncode.com>