{"id":13501740,"url":"https://github.com/pythad/selenium_extensions","last_synced_at":"2025-10-06T13:52:58.497Z","repository":{"id":24445283,"uuid":"101582060","full_name":"pythad/selenium_extensions","owner":"pythad","description":"Tools that will make writing tests, bots and scrapers using Selenium much easier","archived":false,"fork":false,"pushed_at":"2024-12-07T05:26:45.000Z","size":96,"stargazers_count":140,"open_issues_count":18,"forks_count":11,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-28T06:09:05.739Z","etag":null,"topics":["headless-browsers","selenium","selenium-webdriver","test-automation"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pythad.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-27T21:41:23.000Z","updated_at":"2025-01-28T08:22:10.000Z","dependencies_parsed_at":"2024-03-12T05:31:08.594Z","dependency_job_id":"05ebc408-8cdd-4d7e-9a4e-df27b37f8cc5","html_url":"https://github.com/pythad/selenium_extensions","commit_stats":{"total_commits":39,"total_committers":4,"mean_commits":9.75,"dds":"0.33333333333333337","last_synced_commit":"b56639994f2dd2063361bee4677e8f341e83812a"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythad%2Fselenium_extensions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythad%2Fselenium_extensions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythad%2Fselenium_extensions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pythad%2Fselenium_extensions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pythad","download_url":"https://codeload.github.com/pythad/selenium_extensions/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135144,"owners_count":20889421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["headless-browsers","selenium","selenium-webdriver","test-automation"],"created_at":"2024-07-31T22:01:48.263Z","updated_at":"2025-10-06T13:52:53.465Z","avatar_url":"https://github.com/pythad.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"===================\nSelenium extensions\n===================\n\n.. image:: https://img.shields.io/pypi/pyversions/selenium_extensions.svg\n        :target: https://pypi.python.org/pypi/selenium_extensions\n        :alt: Supported python versions\n\n.. image:: https://img.shields.io/pypi/v/selenium_extensions.svg\n        :target: https://pypi.python.org/pypi/selenium_extensions\n        :alt: PyPI version\n\n.. image:: https://readthedocs.org/projects/selenium_extensions/badge/?version=latest\n        :target: https://selenium_extensions.readthedocs.io/en/latest/?badge=latest\n        :alt: Documentation Status\n\n.. image:: https://pyup.io/repos/github/pythad/selenium_extensions/shield.svg\n        :target: https://pyup.io/repos/github/pythad/selenium_extensions/\n        :alt: Updates\n\n.. image:: https://img.shields.io/github/license/pythad/selenium_extensions.svg\n        :target: https://pypi.python.org/pypi/selenium_extensions\n        :alt: License\n\n\n\nTools that will make writing tests, bots and scrapers using Selenium much easier\n\n\n* Free software: MIT license\n* Documentation: https://selenium-extensions.readthedocs.io.\n\n************\nInstallation\n************\n\n.. code-block:: console\n\n    $ pip install selenium_extensions\n\n*******\nExample\n*******\n\nCreating a headless Selenium bot and filling in a form is as easy as\n\n.. code-block:: python\n\n    from selenium.webdriver.common.by import By\n    from selenium_extensions.core import SeleniumDriver\n\n\n    class MyBot(SeleniumDriver):\n\n        def __init__(self, *args, **kwargs):\n            super().__init__(*args, **kwargs)\n\n        def goto_google(self):\n            self.driver.get('https://google.com')\n            searchbox_locator = (By.ID, 'lst-ib')\n            self.wait_for_element_to_be_present(searchbox_locator)\n            self.populate_text_field(searchbox_locator, 'query')\n\n\n    bot = MyBot(browser='chrome', executable_path='/usr/bin/chromedriver', run_headless=True)\n    bot.goto_google()\n    bot.shut_down()\n\nOr do you want to wait until you will be redirected from login page? ``selenium_extensions`` makes it easy\n\n.. code-block:: python\n\n    from selenium_extensions.helpers import wait_for_function_truth\n    from selenium_extensions.helpers import element_has_gone_stale\n\n\n    ...\n    login_btn = self.driver.find_element_by_css_selector(\n        \"button.submit.EdgeButton.EdgeButton--primary\")\n    login_btn.click()\n\n    # Wait to be redirected\n    wait_for_function_truth(element_has_gone_stale, login_btn)\n\n********\nFeatures\n********\n\n* ``selenium_extensions.drivers.chrome_driver`` - extended Chrome webdriver class with built-in support for headless mode and rendering webpages without media.\n* ``selenium_extensions.drivers.firefox_driver`` - extended Firefox webdriver class with built-in support for headless mode and rendering webpages without media.\n* ``selenium_extensions.core.scroll`` - scrolls the current page or the Selenium WebElement if one is provided.\n* ``selenium_extensions.core.element_is_present`` - shortcut to check if the element is present on the current page.\n* ``selenium_extensions.core.wait_for_element_to_be_clickable`` - waits for element described by `element_locator` to be clickable.\n* ``selenium_extensions.helpers.element_has_gone_stale`` - checks if element has gone stale.\n* ``selenium_extensions.core.SeleniumDriver`` - class with all necessary tools in one place. User's classes should inherit from this class and initialize it using ``super()``. After this their class will have ``driver`` attribute and all the methods ready to go.\n\nand more.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythad%2Fselenium_extensions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpythad%2Fselenium_extensions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpythad%2Fselenium_extensions/lists"}