Skip to main content

Test-friendly Python API for Selenium and integration with web application frameworks.

Project description

gocept.selenium provides an API for the Selenium remote control that is suited for writing tests and integrates this with your test suite for any WSGI, Plone, Zope 2, ZTK, or Grok application.

While the testing API could be used independently, the integration is done using test layers, which are a feature of zope.testrunner.

Developing gocept.selenium

Author:gocept <>
Online documentation:
PyPI page:
Issue tracker:
Source code:
Current change log:

buildout configuration

gocept.selenium integrates with quite a lot of different testing approaches and needs to work across a wide spectrum of software versions, e. g. Zope2 before and after eggification (2.10/2.12), ZTK-KGS, Grok-KGS, Plone3, Plone4 etc.

This has two consequences, one is that we use different extras_require for the different flavours, so clients will need to specify that, e. g. gocept.selenium[ztk] or gocept.selenium[grok].

The second is that there is no single buildout configuration for this package, but rather quite a lot of them, so we are able to run our tests against all the different software versions we integrate with.

The base package itself is tested with selenium.cfg, this has no further dependencies except the selenium package. The various flavours have their own cfg file, in some cases in several versions (e.g. Plone3/Plone4, Zope2 pre/post eggs etc.). This means that in order to set up the buildout, you’ll need to specify the configuration you want to test, like this:

$ python -c ztk.cfg
$ bin/buildout -c ztk.cfg

Note that the zope210 and plone3 configurations require Python-2.4, while the others should work at least up to Python-2.6.


2.0.0a2 (2013-01-09)

  • Add layer that uses Webdriver as the Selenium backend instead of the old Remote Control.

1.1.1 (2012-12-19)

  • Update StaticFilesLayer to the new httpserverlayer API.

1.1 (2012-12-19)

  • Extract HTTP server integration into separate package, gocept.httpserverlayer

1.0 (2012-11-03)

  • Marking the API as stable.

0.17 (2012-11-01)

  • Added gocept.selenium.skipUnlessBrowser decorator to skip tests unless ceratins browser requirements are met.
  • Fix: The static test server did not shutdown in some situations.

0.16 (2012-10-10)

  • Fixed selenese popup tests.
  • Open a random port for the server process by default: When the environment variable GOCEPT_SELENIUM_APP_PORT is not set, a random free port is bound. This allows parallel testing, for instance (#11323).

0.15 (2012-09-14)

  • WSGI-Layer is comptabile with Python 2.5.
  • Encoding support in converthtmltests (Patch by Tom Gross <>).
  • XHTML support for selenium tables (Patch by Tom Gross <>).

0.14 (2012-06-06)

  • API expansion: Added assertCssCount. Thus requiring selenium >= 2.0.
  • Added Trove classifiers to package metadata.
  • Moved code to Mercurial.

0.13.2 (2012-03-15)

  • Fixed WSGI flavor: There was a RuntimeError in tear down if the WSGI server was shut down correctly.

0.13.1 (2012-03-15)

  • Updated URL of bug tracker.
  • script extra no longer requires elementtree on Python >= 2.5.

0.13 (2012-01-30)

  • Added a selenese assert type ‘list’ and added it to the window management query methods.
  • API expansion: added openWindow.
  • API change: filter the result of getAllWindowNames to ignore ‘null’.
  • backwards-compatible API change: selectWindow now selects the main window also when passed the window id None or no argument at all.
  • pinned compatible ZTK version to 1.0.1, grok version to 1.2.1, generally pinned all software packages used to consistent versions for this package’s own testing

0.12 (2011-11-29)

  • API expansion: added getAllWindow* and selectWindow.

0.11 (2011-09-15)

  • Added some notes how to test a Zope 2 WSGI application.
  • Described how to test a Zope 2/Plone application if using plone.testing to set up test layers.

0.10.1 (2011-02-02)

  • Improvements on the README.
  • Wrote a quick start section for packages using ZTK but using instead of
  • Allowed to use regexp as pattern prefix for regular expressions additionally to regex to be compatible with the docstring and the Selenium documentation.

0.10 (2011-01-18)

  • Script that generates python tests from Selenium HTML tables. Reused from KSS project, courtesy of Jeroen Vloothuis, original author.
  • Using a URL of Selenium RC in README where version 1.0.3 can be downloaded (instead of 1.0.1) which works fine with Firefox on Mac OS X, too.

0.9 (2010-12-28)

  • Provide integration with the recent testlayer approach ( used by Grok (#8260).
  • Provide integration with plone.testing
  • Make browser and RC server configurable (#6484).
  • Show current test case in command log (#7876).
  • Raise readable error when connection to RC server fails (#6489).
  • Quit browser when the testrunner terminates (#6485).

0.8 (2010-10-22)

  • Fixed tests for the StaticFilesLayer to pass with Python 2.4 through 2.7.
  • API expansion: getSelectOptions

0.7 (2010-08-16)

  • API expansion: getElementHeight|Width, getCookie* and a few others.
  • lots of action methods (mouse* among others)

0.6 (2010-08-09)

  • assertXpathCount now also takes ints (#7681).
  • API expansion: add isChecked to verify checkboxes, runScript, clickAt, getLocation, getSelectedValue, getSelectedIndex.
  • The pause method uses float division now. Pauses where implicitly rounded to full seconds before when an int was passed.
  • The name of the factored test layer contains the module of the bases now. The name is used by zope.testrunner distinguish layers. Before this fix selenium layers factored from base layers with the same names but in different modules would be considered equal by zope.testrunner.
  • The factored ZTK layer cleanly shuts down the http server in tearDown now. This allows to run different selenium layers in one go.

0.5 (2010-08-03)

  • Add a static files test layer for running selenium tests against a set of static (HTML) files.
  • Patterns now also work with multiline strings, i. e. ‘foo*’ will match ‘foonbar’ (#7790).

0.4.2 (2010-05-20)

  • API expansion: *keyDown, *keyUp, keyPress.

0.4.1 (2010-04-01)

  • API expansion: added getSelectedLabel.
  • Ignore the code of a server’s response when calling open. The default behaviour of SeleniumRC changed between 1.0.1 and 1.0.2 but we want the old behaviour by default.

0.4 (2010-03-30)

  • API expansion: add getLocation to retrieve currently loaded URL in browser.
  • API expansion: added waitForPopUp, selectPopUp, deselectPopUp and close.
  • API expansion: added verifyAlertPresent, verifyAlertNotPresent and waitForAlertPresent.
  • Usability: raise a better readable exception when an unimplemented selenese method is called.
  • Usability: raise failure exceptions that convey the name of the failed assertion in spite of some lambdas wrapped around it.

0.3 (2010-01-12)

  • Extracted ‘host’ and ‘port’ as class attributes of gocept.selenium.ztk.Layer so subclasses can override them; stopped hardcoding 8087 as the server port.

0.2.1 (2009-12-18)

  • Fix incomplete sdist release on PyPI.

0.2 (2009-12-18)

  • Make Zope 2 test server reachable from the outside.
  • Implemented getTitle/assertTitle/waitForTitle/etc.

0.1 (2009-11-08)

  • first release

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (120.4 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page