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

IRC/Slack:

https://www.selenium.dev/support/#ChatRoom

Docs:

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

API Docs:

api.html

Updated documentation published with each commit is available at: readthedocs.io


Supported Python Versions

  • Python 3.9+

Supported Browsers

Several browsers are supported, as well as the Remote protocol:

  • Chrome

  • Edge

  • Firefox

  • Safari

  • WebKitGTK

  • WPEWebKit

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://developer.chrome.com/docs/chromedriver

Edge:

https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver

Firefox:

https://github.com/mozilla/geckodriver

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

  • Fork the selenium repo and clone it locally

  • Create a branch for your work
    • Run: git checkout -b my-cool-branch-name

  • Create a virtual environment and install tox
    • Run: python -m venv venv && source venv/bin/activate && pip install tox

  • Make your changes

  • Run: 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 be staged again

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

  • Submit a Pull Request

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.34.2.tar.gz (896.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: selenium-4.34.2.tar.gz
  • Upload date:
  • Size: 896.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.23

File hashes

Hashes for selenium-4.34.2.tar.gz
Algorithm Hash digest
SHA256 0f6d147595f08c6d4bad87b34c39dcacb4650aedc78e3956c8eac1bb752a3854
MD5 1f873dfb3b081b20a12531f6440503cc
BLAKE2b-256 b0e6646d0a41fb9a64572043c3de80be2a4941f2aeb578f273cf3dae54fc9437

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for selenium-4.34.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ea208f7db9e3b26e58c4a817ea9dd29454576d6ea55937d754df079ad588e1ad
MD5 bdbc4335ba58f0689fea1656863f11dc
BLAKE2b-256 f32bdee1c58bde0a747b2d75fa7282a190885a726fe95b18b8ce1dc52f9c0983

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