123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- ======================
- Selenium Client Driver
- ======================
- Introduction
- ============
- Python language bindings for Selenium WebDriver.
- The `selenium` package is used to automate web browser interaction from Python.
- +-----------+--------------------------------------------------------------------------------------+
- | **Home**: | http://www.seleniumhq.org |
- +-----------+--------------------------------------------------------------------------------------+
- | **Docs**: | `selenium package API <https://seleniumhq.github.io/selenium/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.3+
- Installing
- ==========
- If you have `pip <https://pip.pypa.io/>`_ 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-3.4.3.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 their machine. You may consider using a `virtualenv <http://www.virtualenv.org/>`_ to create isolated Python environments instead.
- Drivers
- =======
- Selenium requires a driver to interface with the chosen browser. Firefox,
- for example, requires `geckodriver <https://github.com/mozilla/geckodriver/releases>`_, which needs to be installed before the below examples can be run. Make sure it's in your `PATH`, e. g., place it in `/usr/bin` or `/usr/local/bin`.
- Failure to observe this step will give you an error `selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.`
- Other supported browsers will have their own drivers available. Links to some of the more popular browser drivers follow.
- +--------------+-----------------------------------------------------------------------+
- | **Chrome**: | https://sites.google.com/a/chromium.org/chromedriver/downloads |
- +--------------+-----------------------------------------------------------------------+
- | **Edge**: | https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ |
- +--------------+-----------------------------------------------------------------------+
- | **Firefox**: | https://github.com/mozilla/geckodriver/releases |
- +--------------+-----------------------------------------------------------------------+
- | **Safari**: | https://webkit.org/blog/6900/webdriver-support-in-safari-10/ |
- +--------------+-----------------------------------------------------------------------+
- 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/3.4/selenium-server-standalone-3.4.0.jar
- Run the server from the command line::
- java -jar selenium-server-standalone-3.4.0.jar
- Then run your Python client scripts.
- Use The Source Luke!
- ====================
- View source code online:
- +-----------+-------------------------------------------------------+
- | official: | https://github.com/SeleniumHQ/selenium/tree/master/py |
- +-----------+-------------------------------------------------------+
|