======================
Selenium Client Driver
======================

Introduction
============

Python language bindings for Selenium WebDriver.

The `selenium` package is used automate web browser interaction from Python.

+-----------+-----------------------------------------------------------------------------------+
| **Home**: | http://www.seleniumhq.org                                                         |
+-----------+-----------------------------------------------------------------------------------+
| **Docs**: | `selenium package API <http://selenium.googlecode.com/git/docs/api/py/api.html>`_ |
+-----------+-----------------------------------------------------------------------------------+
| **Dev**:  | https://github.com/SeleniumHQ/selenium                                               |
+-----------+-----------------------------------------------------------------------------------+
| **PyPI**: | https://pypi.python.org/pypi/selenium                                             |
+-----------+-----------------------------------------------------------------------------------+
| **IRC**:  | **#selenium** channel on freenode                                                 |
+-----------+-----------------------------------------------------------------------------------+

Several browsers/drivers are supported (Firefox, Chrome, Internet Explorer, PhantomJS), as well as the Remote protocol.

Supported Python Versions
=========================

* Python 2.6, 2.7
* Python 3.2, 3.3

Installing
==========

If you have `pip <http://www.pip-installer.org>`_ on your system, you can simply install or upgrade the Python bindings::

    pip install -U selenium

Alternately, you can download the source distribution from `PyPI <http://pypi.python.org/pypi/selenium>`_ (e.g. selenium-2.47.tar.gz), unarchive it, and run::

    python setup.py install

Note: both of the methods described above install `selenium` as a system-wide package  That will require administrative/root access to ther machine.  You may consider using a `virtualenv <http://www.virtualenv.org/>`_ to create isolated Python environments instead.

Example 0:
==========

* open a new Firefox browser
* load the page at the given URL

::

    from selenium import webdriver

    browser = webdriver.Firefox()
    browser.get('http://seleniumhq.org/')

Example 1:
==========

* open a new Firefox browser
* load the Yahoo homepage
* search for "seleniumhq"
* close the browser

::

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    browser = webdriver.Firefox()

    browser.get('http://www.yahoo.com')
    assert 'Yahoo' in browser.title

    elem = browser.find_element_by_name('p')  # Find the search box
    elem.send_keys('seleniumhq' + Keys.RETURN)

    browser.quit()

Example 2:
==========

Selenium WebDriver is often used as a basis for testing web applications.  Here is a simple example uisng Python's standard `unittest <http://docs.python.org/3/library/unittest.html>`_ library:

::

    import unittest

    class GoogleTestCase(unittest.TestCase):

        def setUp(self):
            self.browser = webdriver.Firefox()
            self.addCleanup(self.browser.quit)

        def testPageTitle(self):
            self.browser.get('http://www.google.com')
            self.assertIn('Google', self.browser.title)

    if __name__ == '__main__':
        unittest.main(verbosity=2)

Selenium Server (optional)
==========================

For normal WebDriver scripts (non-Remote), the Java server is not needed.

However, to use Selenium Webdriver Remote or the legacy Selenium API (Selenium-RC), you need to also run the Selenium server.  The server requires a Java Runtime Environment (JRE).

Download the server separately, from: http://selenium-release.storage.googleapis.com/2.47/selenium-server-standalone-2.47.1.jar

Run the server from the command line::

    java -jar selenium-server-standalone-2.47.1.jar

Then run your Python client scripts.

Use The Source Luke!
====================

View source code online at https://github.com/SeleniumHQ/selenium/tree/master/py/
