相关文章推荐
坚强的咖啡豆  ·  Selenium Python ...·  1 年前    · 
坚强的咖啡豆  ·  Selenium Python ...·  1 年前    · 
坚强的咖啡豆  ·  selenium · PyPI·  1 年前    · 

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 :

Selenium chat room

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

Supported Python Versions

  • Python 3.7+

  • Installing

    If you have pip 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 (e.g. selenium-4.11.2.tar.gz), unarchive it, and run:

    python setup.py install

    Note: You may want to consider using virtualenv to create isolated Python environments.

    Drivers

    Selenium requires a driver to interface with the chosen browser. Firefox, for example, requires geckodriver , 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://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/

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    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 using Python’s standard unittest library:

    import unittest
    from selenium import webdriver
    class GoogleTestCase(unittest.TestCase):
        def setUp(self):
            self.browser = webdriver.Firefox()
            self.addCleanup(self.browser.quit)
        def test_page_title(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 , you need to also run the Selenium server. The server requires a Java Runtime Environment (JRE).

    Download the server separately, from: https://www.selenium.dev/downloads/

    Run the server from the command line:

    java -jar selenium-server-4.11.0.jar

    Then run your Python client scripts.

    Use The Source Luke!

    View source code online:

    Official:

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

  • Create a branch for your work

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

  • python3.7 -m venv .venv && . .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 breakages.

  • flake8 requires manual fixes

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

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

  • Download files

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

    Source Distribution