selenium_extensions package¶
selenium_extensions.drivers module¶
-
selenium_extensions.drivers.chrome_driver(executable_path=None, run_headless=False, load_images=True)[source]¶ Function to initialize
selenium.webdriver.Chromewith extended optionsParameters: - executable_path (str) – path to the chromedriver binary. If set to
Noneselenium will serach forchromedriverin$PATH. - run_headless (bool) – boolean flag that indicates if chromedriver has to be headless (without GUI).
- load_images (bool) – boolean flag that indicates if Chrome has to render images.
Returns: created driver.
Return type: selenium.webdriver.Chrome
Note
In order to create Chrome driver Selenium requires Chrome to be installed and chromedriver to be downloaded.
Warning
Headless Chrome is shipping in Chrome 59 and in Chrome 60 for Windows. Update your Chrome browser if you want to use
headlessoption.- executable_path (str) – path to the chromedriver binary. If set to
-
selenium_extensions.drivers.firefox_driver(executable_path=None, run_headless=False, load_images=True)[source]¶ Function to initialize
selenium.webdriver.Firefoxwith extended optionsParameters: - executable_path (str) – path to the
geckdriverbinary. If set toNoneselenium will search forgeckdriverin$PATH. - run_headless (bool) – boolean flag that indicates if
geckodriverhas to be headless (without GUI).geckodriverdoesn’t support native headless mode, that’s whypyvirtualdisplayis used. - load_images (bool) – boolean flag that indicates if Firefox has to render images.
Returns: created driver.
Return type: selenium.webdriver.Firefox
Note
In order to create Firefox driver Selenium requires Firefox to be installed and geckodriver to be downloaded.
Note
Firefox doesn’t support native headless mode. We use
pyvirtualdisplayto simulate it. In orderpyvirtualdisplayto work you need to installXvfbpackage:sudo apt install xvfb.- executable_path (str) – path to the
selenium_extensions.core module¶
-
class
selenium_extensions.core.SeleniumDriver(browser=None, executable_path=None, run_headless=False, load_images=True)[source]¶ Base class for selenium-based drivers
User’s classes should inherit from this class and initialize it using
super(). After this their class will havedriverattribute and all the methods ready to go.Parameters: - browser ('chrome' or 'firefox') – webdriver to use.
- executable_path (str) – path to the browser’s webdriver binary. If set to
Noneselenium will serach for browser’s webdriver in$PATH. - run_headless (bool) – boolean flag that indicates if webdriver has to be headless (without GUI).
- load_images (bool) – boolean flag that indicates if webdriver has to render images.
Raises: selenium_extensions.exceptions.SeleniumExtensionsException–browseris not supported byselenium_extensions.Example
from selenium_extensions.core import SeleniumDriver class MyBot(SeleniumDriver): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def goto_google(self): self.driver.get('https://google.com') bot = MyBot(browser='chrome', executable_path='/usr/bin/chromedriver', run_headless=True, load_images=False) bot.goto_google() bot.shut_down()
Note
In order to create Chrome driver Selenium requires Chrome to be installed and chromedriver to be downloaded.
Note
In order to create Firefox driver Selenium requires Firefox to be installed and geckodriver to be downloaded.
Note
Firefox doesn’t support native headless mode. We use
pyvirtualdisplayto simulate it. In orderpyvirtualdisplayto work you need to installXvfbpackage:sudo apt install xvfb.
-
selenium_extensions.core.scroll(driver, scroll_element=None)[source]¶ Scrolls the current page or the Selenium WebElement if one is provided
Parameters: - driver (selenium.webdriver.) – Selenium webdriver to use.
- scroll_element (selenium.webdriver.remote.webelement.WebElement) – Selenium webelement to scroll.
Examples
from selenium import webdriver from selenium_extensions.core import scroll driver = webdriver.Chrome() scroll(driver)
from selenium import webdriver from selenium_extensions.core import scroll driver = webdriver.Chrome() ... pop_up = driver.find_element_by_class_name('ff_pop_up') scroll(driver, pop_up)
-
selenium_extensions.core.click_on_element(driver, element_locator)[source]¶ Clicks on a Selenium element represented by
element_locatorParameters: element_locator ((selenium.webdriver.common.by.By., str)) – element locator described using By. Take a look at Locate elements By for more info. Example
from selenium import webdriver from selenium.webdriver.common.by import By from selenium_extensions.core import click_on_element driver = webdriver.Chrome() ... click_on_element(driver, (By.ID, 'form-submit-button'))
-
selenium_extensions.core.element_is_present(driver, element_locator, waiting_time=2)[source]¶ Shortcut to check if the element is present on the current page
Parameters: - driver (selenium.webdriver.) – Selenium webdriver to use.
- element_locator ((selenium.webdriver.common.by.By., str)) –
element locator described using By. Take a look at Locate elements By for more info.
- waiting_time (int) – time in seconds - describes how much to wait.
Returns: True if the element is present on the current page, False otherwise.
Return type: bool
Example
from selenium import webdriver from selenium.webdriver.common.by import By from selenium_extensions.core import element_is_present driver = webdriver.Chrome() ... if not element_is_present(driver, (By.CLASS_NAME, 'search_photos_block')): pass # Do your things here
-
selenium_extensions.core.wait_for_element_to_be_present(driver, element_locator, waiting_time=2)[source]¶ Shortcut to wait until the element is present on the current page
Parameters: - driver (selenium.webdriver.) – Selenium webdriver to use.
- element_locator ((selenium.webdriver.common.by.By., str)) –
element locator described using By. Take a look at Locate elements By for more info.
- waiting_time (int) – time in seconds - describes how much to wait.
Raises: selenium.common.exceptions.TimeoutException– timeout waiting for element described byelement_locator.Example
from selenium import webdriver from selenium.webdriver.common.by import By from selenium_extensions.core import wait_for_element_to_be_present driver = webdriver.Chrome() ... wait_for_element_to_be_present(driver, (By.CLASS_NAME, 'search_load_btn'))
-
selenium_extensions.core.wait_for_element_to_be_clickable(driver, element_locator, waiting_time=2)[source]¶ Waits for element described by element_locator to be clickable
Parameters: - element_locator ((selenium.webdriver.common.by.By., str)) –
element locator described using By. Take a look at Locate elements By for more info.
- waiting_time (int) – time in seconds - describes how much to wait.
Raises: selenium.common.exceptions.TimeoutException– timeout waiting for element described byelement_locator.Example
from selenium import webdriver from selenium.webdriver.common.by import By from selenium_extensions.core import wait_for_element_to_be_clickable driver = webdriver.Chrome() ... wait_for_element_to_be_clickable(driver, (By.CLASS_NAME, 'form-submit-button'))
- element_locator ((selenium.webdriver.common.by.By., str)) –
-
selenium_extensions.core.populate_text_field(driver, element_locator, text)[source]¶ Populates text field with provided text
Parameters: - element_locator ((selenium.webdriver.common.by.By., str)) –
element locator described using By. Take a look at Locate elements By for more info.
- text (str) – text to populate text field with.
Example
from selenium import webdriver from selenium.webdriver.common.by import By from selenium_extensions.core import populate_text_field driver = webdriver.Chrome() ... populate_text_field(driver, (By.CLASS_NAME, 'textbox'), 'some text')
- element_locator ((selenium.webdriver.common.by.By., str)) –
-
selenium_extensions.core.shut_down(driver)[source]¶ Shuts down the driver and its virtual display
Parameters: driver (selenium.webdriver.) – Selenium webdriver to stop. Example
from selenium import webdriver from selenium_extensions.core import shut_down driver = webdriver.Chrome() ... shut_down(driver)
selenium_extensions.helpers module¶
-
selenium_extensions.helpers.element_has_gone_stale(element)[source]¶ Checks if element has gone stale
Parameters: element (selenium.webdriver.remote.webelement.WebElement) – Selenium webelement to check for. Returns: True if element has gone stale, False otherwise. Return type: bool Examples
from selenium_extensions.helpers import element_has_gone_stale if element_has_gone_stale(your_element): pass # Do something
from selenium_extensions.helpers import wait_for_function_truth from selenium_extensions.helpers import element_has_gone_stale login_btn = driver.find_element_by_class_name('login_btn') wait_for_function_truth(element_has_gone_stale, element)
-
selenium_extensions.helpers.wait_for_function_truth(condition_function, *args, time_to_wait=10, time_step=0.1)[source]¶ Waits for function represented by
condition_functionto return any non-False valueParameters: - condition_function (function) – function to wait for.
- *args – arguments that should be applied to the function.
- time_to_wait (int) – time in seconds to wait.
- time_step (float) – step in seconds between checks.
Returns: True if
wait_for_function_truthsucceeded and didn’t reachtime_to_waitlimitReturn type: bool
Raises: selenium.common.exceptions.TimeoutException– timeout waiting for function described bycondition_functionto return any non-False value.Example
from selenium_extensions.helpers import wait_for_function_truth from selenium_extensions.helpers import element_has_gone_stale login_btn = driver.find_element_by_class_name('login_btn') wait_for_function_truth(element_has_gone_stale, element)
-
selenium_extensions.helpers.kill_virtual_display(self, display)[source]¶ Kills virtual display created by
pyvirtualdisplay.Display()Parameters: display (pyvirtualdisplay.Display) – display to kill. Example
from selenium_extensions.helpers import kill_virtual_display display = Display(visible=0, size=(1024, 768)) display.start() ... kill_virtual_display(display)
-
selenium_extensions.helpers.join_css_classes(*args)[source]¶ Joins css classes into a single string
Parameters: *args – arguments that represent classes that should be joined. Returns: a single string representing all of the classes. Return type: str Examples
from selenium_extensions.helpers import join_css_classes classes = join_css_classes('class1', 'class2') print(classes) # '.class2 .class2'