selenium_extensions package¶
selenium_extensions.drivers module¶
-
selenium_extensions.drivers.
chrome_driver
(executable_path=None, run_headless=False, load_images=True, use_proxy=None)[source]¶ Function to initialize
selenium.webdriver.Chrome
with extended optionsParameters: - executable_path (str) – path to the chromedriver binary. If set to
None
selenium will serach forchromedriver
in$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.
- use_proxy (str) – use http proxy in <host:port> format.
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
headless
option.- 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, use_proxy=None)[source]¶ Function to initialize
selenium.webdriver.Firefox
with extended optionsParameters: - executable_path (str) – path to the
geckdriver
binary. If set toNone
selenium will search forgeckdriver
in$PATH
. - run_headless (bool) – boolean flag that indicates if
geckodriver
has to be headless (without GUI).geckodriver
doesn’t support native headless mode, that’s whypyvirtualdisplay
is used. - load_images (bool) – boolean flag that indicates if Firefox has to render images.
- use_proxy (str) – use http proxy in <host:port> format.
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
pyvirtualdisplay
to simulate it. In orderpyvirtualdisplay
to work you need to installXvfb
package: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, use_proxy=None)[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 havedriver
attribute 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
None
selenium will search 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.
- use_proxy (str) – use http proxy in <host:port> format.
Raises: selenium_extensions.exceptions.SeleniumExtensionsException
–browser
is 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
pyvirtualdisplay
to simulate it. In orderpyvirtualdisplay
to work you need to installXvfb
package: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_locator
Parameters: 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_function
to 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_truth
succeeded and didn’t reachtime_to_wait
limitReturn type: bool
Raises: selenium.common.exceptions.TimeoutException
– timeout waiting for function described bycondition_function
to 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'