Skip to main content

Official Python bindings for Selenium WebDriver

Project description

Introduction

Python language bindings for Selenium WebDriver.

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

Home:

https://selenium.dev

GitHub:

https://github.com/SeleniumHQ/Selenium

PyPI:

https://pypi.org/project/selenium

API Docs:

https://selenium.dev/selenium/docs/api/py/api.html

IRC/Slack:

Selenium chat room

Several browsers/drivers are supported (Firefox, Chrome, Edge, Safari), as well as the Remote protocol.

Supported Python Versions

  • Python 3.9+

Installing

If you have pip on your system, you can simply install or upgrade the Python bindings:

pip install -U selenium

You may want to consider using a virtual environment to create isolated Python environments.

Drivers

Selenium requires a driver to interface with the chosen browser (chromedriver, edgedriver, geckodriver, etc).

In older versions of Selenium, it was necessary to install and manage these drivers yourself. You had to make sure the driver executable was available on your system PATH, or specified explicitly in code. Modern versions of Selenium handle browser and driver installation for you with Selenium Manager. You generally don’t have to worry about driver installation or configuration now that it’s done for you when you instantiate a WebDriver. Selenium Manager works with most supported platforms and browsers. If it doesn’t meet your needs, you can still install and specify browsers and drivers yourself.

Links to some of the more popular browser drivers:

Chrome:

https://chromedriver.chromium.org/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:

  • launch a new Chrome browser

  • load a web page

  • close the browser

from selenium import webdriver


driver = webdriver.Chrome()
driver.get('https://selenium.dev/')
driver.quit()

Example 1:

  • launch a new Chrome browser

  • load the Selenium documentation page

  • find the “Webdriver” link

  • click the “WebDriver” link

  • close the browser

from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Chrome()

driver.get('https://selenium.dev/documentation')
assert 'Selenium' in driver.title

elem = driver.find_element(By.ID, 'm-documentationwebdriver')
elem.click()
assert 'WebDriver' in driver.title

driver.quit()

Example 2:

Selenium WebDriver is often used as a basis for testing web applications. Here is a simple example using Python’s standard unittest library:

import unittest
from selenium import webdriver


class GoogleTestCase(unittest.TestCase):

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

    def test_page_title(self):
        self.driver.get('https://www.google.com')
        self.assertIn('Google', self.driver.title)

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

Selenium Grid (optional)

For local Selenium scripts, the Java server is not needed.

To use Selenium remotely, you need to also run the Selenium grid. For information on running Selenium Grid: https://www.selenium.dev/documentation/grid/getting_started/

To use Remote WebDriver see: https://www.selenium.dev/documentation/webdriver/drivers/remote_webdriver/?tab=python

Use The Source Luke!

View source code online:

Official:

https://github.com/SeleniumHQ/selenium/tree/trunk/py

Contributing

  • Create a branch for your work

  • Ensure tox is installed (using a virtualenv is recommended)

  • Run: python -m venv venv && source venv/bin/activate && pip install tox

  • After making changes, before committing execute tox -e linting

  • If tox exits 0, commit and push. Otherwise fix the newly introduced style violations.

  • flake8 requires manual fixes

  • black will rewrite the violations automatically, however the files are unstaged and should staged again.

  • isort will rewrite the violations automatically, however the files are unstaged and should staged again.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

selenium-4.31.0.tar.gz (855.4 kB view details)

Uploaded Source

Built Distribution

selenium-4.31.0-py3-none-any.whl (9.4 MB view details)

Uploaded Python 3

File details

Details for the file selenium-4.31.0.tar.gz.

File metadata

  • Download URL: selenium-4.31.0.tar.gz
  • Upload date:
  • Size: 855.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.21

File hashes

Hashes for selenium-4.31.0.tar.gz
Algorithm Hash digest
SHA256 441cffc436a2e6659fe3cfb012692435652efd38b0d368d16f661a5db47825f5
MD5 a7b0f810b79c35bde02e62b0a28af448
BLAKE2b-256 e0bf642cce8b5a9edad8e4880fdefbeb24f69bec2086b1121c63f883c412b797

See more details on using hashes here.

File details

Details for the file selenium-4.31.0-py3-none-any.whl.

File metadata

  • Download URL: selenium-4.31.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.21

File hashes

Hashes for selenium-4.31.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b8b8d5e424d7133cb7aa656263b19ac505ec26d65c0f921a696e7e2c5ccd95b
MD5 1ae8a8a938ee4f14384416bee21f53a5
BLAKE2b-256 3253212db779d2481b0a8428365960596f8d5a4d482ae12c441d0507fd54aaf2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page