Welcome to Contesto’s documentation!¶
Installation¶
pip install -U git+https://github.com/2gis/contesto.git#egg=contesto
Quick start¶
run it:
java -jar selenium-server-standalone-x.x.x.jar
run test:
from contesto import ContestoTestCase class TestExample(ContestoTestCase): def test_example(self): self.driver.get("http://google.com")
Simple configuration¶
In case you need some customization, for example, you prefer to run selenium server on port 9000 and you need to run tests using chrome
create
config.ini
:[Selenium] host: localhost port: 9000 browserName: chrome
add
config.ini
in test:from contesto import ContestoTestCase, config config.add_config_file("config.ini") class TestExample(ContestoTestCase): def test_example(self): self.driver.get("http://google.com")
Contents:¶
Config¶
Basics¶
You can import config:
>>> from contesto import config
You can reach every section and option with config.section[option]
:
>>> config.selenium['host']
'localhost'
Warning
All sections are in lowercase
.
Adding a new config file¶
from contesto import config
config.add_config_file("config.ini")
Config stacking¶
Sometimes you may want to modify some rows of tests config without rewriting full config.
For example you may want to run tests locally. You already have config file config.ini
in your VCS:
[selenium]
host: your.selenium.test.server
port: 4444
browser: chrome
To run tests locally, you need to change host
option.
To do so without modifying config.ini
you can create local.config.ini
and make a change there:
[selenium]
host: localhost
Then you need to add both of them:
from contesto import config
config.add_config_file("config.ini")
config.add_config_file("local.config.ini")
In the runtime the result config is going to be like this:
[selenium]
host: localhost
port: 4444
browser: chrome
Sections¶
Driver section¶
Driver section is used to form command executor
(url where tests are going to run) and desired capabilities
.
By default Contesto is using selenium
section:
[selenium]
host: your.selenium.test.server
port: 4444
browser: chrome
Driver section consists of two kind of options:
host
,port
– arecommand executor
options.- Every other option – is
desired capabilities
option.
append to desired capabilities¶
Every option that is written in section goes to desired capabilities, except host
and port
:
[selenium]
host: your.selenium.test.server
port: 4444
browser: chrome
some_option: "some_value"
{
"desiredCapabilities": {
"javascriptEnabled": true,
"platform": "ANY",
"browserName": "chrome",
"version": "",
"browser": "chrome",
"some_option": "some_value"
}
}
force desired capabilities¶
If you want to force desired capabilities to equal some dictionary, you can write it explicitly:
[Selenium]
host: your.selenium.test.server
port: 4444
desired_capabilities: {
"browserName": "chrome"
}
{
"desiredCapabilities": {
"browserName": "chrome"
}
}
use another driver section¶
By default Contesto is using selenium
driver with standard selenium bindings.
Utils section¶
save_screenshots
- if set and test method is decorated withcontesto.utils.screenshot.save_screenshot_on_error()
then screenshots will be saved on any uncaught exception raised in test method.screenshots_path
- path for existing folder where screenshots will be saved (absolute or relative to current working directory).
[utils]
save_screenshots: True
screenshot_path: /some/existing/path/screenshots/
Timeout section¶
TODO
Session section¶
TODO
Browsermobproxy section¶
TODO
Custom user section¶
TODO
Page Object Example¶
Test case¶
test.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # coding: utf-8
import os
from contesto import ContestoTestCase, config
from examples.page import CityPage
config.add_config_file(os.path.join(os.path.dirname(__file__), "config.ini"))
class TestExample(ContestoTestCase):
def setUp(self):
super(TestExample, self).setUp()
self.driver.get("http://2gis.ru")
self.page = CityPage(self.driver)
def test_example(self):
self.page.search_bar().search("1")
results_count = self.page.search_results().results_count()
self.assertGreater(results_count, 0)
|
Page¶
page.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | from contesto import Page, Component, find_element, by, step, Step
class SearchResults(Component):
_header = by.class_name("mixedResults__header")
def header(self):
return find_element(self.element, self._header)
def results_count(self):
header_text = self.header().text
count = ''.join(x for x in header_text if x.isdigit())
return int(count)
class SearchBar(Component):
_search_field = by.css_selector(".searchBar__textfield._directory .suggest__input")
_search_submit_button = by.css_selector(".searchBar__submit._directory")
def __init__(self, driver, element):
self.register_onload_elements([
self._search_field,
self._search_submit_button
])
super(SearchBar, self).__init__(driver, element)
def search_field(self):
return find_element(self.element, self._search_field)
def search_submit_button(self):
return find_element(self.element, self._search_submit_button)
@step("searching for {text}")
def search(self, text):
with Step("entering text %s" % text):
self.search_field().send_keys(text)
with Step("submitting search"):
self.search_submit_button().click()
class CityPage(Page):
_search_bar = by.class_name("online__searchBar")
_search_results = by.class_name("mixedResults")
def __init__(self, driver):
self.register_onload_elements([self._search_bar])
super(CityPage, self).__init__(driver)
def search_bar(self):
return SearchBar(self.driver, find_element(self.driver, self._search_bar))
def search_results(self):
return SearchResults(self.driver, find_element(self.driver, self._search_results))
|
Component¶
Component¶
MobileComponent¶
-
class
contesto.
MobileComponent
(driver, element=None)¶ -
register_onload_elements
(elements)¶
-
register_onload_hooks
(hooks)¶
-
swipe
(direction=0, swipe_num=1, to_element=None)¶
-
swipe_discover_locator
(locator, max_swipe_nums)¶
-
swipe_down
(swipe_num=1)¶
-
swipe_left
(swipe_num=1)¶
-
swipe_right
(swipe_num=1)¶
-
swipe_to_element
(to_element)¶
-
swipe_up
(swipe_num=1)¶
-
Driver¶
ContestoWebDriver¶
-
class
contesto.core.driver.
ContestoWebDriver
(*args, **kwargs)¶ Adds a cookie to your current session.
Args: - cookie_dict: A dictionary object, with required keys - “name” and “value”;
- optional keys - “path”, “domain”, “secure”, “expiry”
- Usage:
- driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’, ‘secure’:True})
-
application_cache
¶ Returns a ApplicationCache Object to interact with the browser app cache
-
back
()¶ Goes one step backward in the browser history.
Usage: driver.back()
-
close
()¶ Closes the current window.
Usage: driver.close()
-
create_web_element
(element_id)¶
-
current_url
¶ Gets the URL of the current page.
Usage: driver.current_url
-
current_window_handle
¶ Returns the handle of the current window.
Usage: driver.current_window_handle
Delete all cookies in the scope of the session.
Usage: driver.delete_all_cookies()
Deletes a single cookie with the given name.
Usage: driver.delete_cookie(‘my_cookie’)
-
desired_capabilities
¶ returns the drivers current desired capabilities being used
-
execute
(driver_command, params=None)¶
-
execute_async_script
(script, *args)¶ Asynchronously Executes JavaScript in the current window/frame.
Args: - script: The JavaScript to execute.
- *args: Any applicable arguments for your JavaScript.
Usage: driver.execute_async_script(‘document.title’)
-
execute_script
(script, *args)¶ Synchronously Executes JavaScript in the current window/frame.
Args: - script: The JavaScript to execute.
- *args: Any applicable arguments for your JavaScript.
Usage: driver.execute_script(‘document.title’)
-
file_detector
¶
-
find_element
(by='id', value=None)¶ ‘Private’ method used by the find_element_by_* methods.
Usage: Use the corresponding find_element_by_* instead of this. Return type: WebElement
-
find_element_by_class_name
(name)¶ Finds an element by class name.
Args: - name: The class name of the element to find.
Usage: driver.find_element_by_class_name(‘foo’)
-
find_element_by_css_selector
(css_selector)¶ Finds an element by css selector.
Args: - css_selector: The css selector to use when finding elements.
Usage: driver.find_element_by_css_selector(‘#foo’)
-
find_element_by_id
(id_)¶ Finds an element by id.
Args: - id_ - The id of the element to be found.
Usage: driver.find_element_by_id(‘foo’)
-
find_element_by_link_text
(link_text)¶ Finds an element by link text.
Args: - link_text: The text of the element to be found.
Usage: driver.find_element_by_link_text(‘Sign In’)
-
find_element_by_name
(name)¶ Finds an element by name.
Args: - name: The name of the element to find.
Usage: driver.find_element_by_name(‘foo’)
-
find_element_by_partial_link_text
(link_text)¶ Finds an element by a partial match of its link text.
Args: - link_text: The text of the element to partially match on.
Usage: driver.find_element_by_partial_link_text(‘Sign’)
-
find_element_by_sizzle
(sizzle_selector)¶ Return type: ContestoWebElement Raise: ElementNotFound
-
find_element_by_tag_name
(name)¶ Finds an element by tag name.
Args: - name: The tag name of the element to find.
Usage: driver.find_element_by_tag_name(‘foo’)
-
find_element_by_xpath
(xpath)¶ Finds an element by xpath.
Args: - xpath - The xpath locator of the element to find.
Usage: driver.find_element_by_xpath(‘//div/td[1]’)
-
find_elements
(by='id', value=None)¶ ‘Private’ method used by the find_elements_by_* methods.
Usage: Use the corresponding find_elements_by_* instead of this. Return type: list of WebElement
-
find_elements_by_class_name
(name)¶ Finds elements by class name.
Args: - name: The class name of the elements to find.
Usage: driver.find_elements_by_class_name(‘foo’)
-
find_elements_by_css_selector
(css_selector)¶ Finds elements by css selector.
Args: - css_selector: The css selector to use when finding elements.
Usage: driver.find_elements_by_css_selector(‘.foo’)
-
find_elements_by_id
(id_)¶ Finds multiple elements by id.
Args: - id_ - The id of the elements to be found.
Usage: driver.find_elements_by_id(‘foo’)
-
find_elements_by_link_text
(text)¶ Finds elements by link text.
Args: - link_text: The text of the elements to be found.
Usage: driver.find_elements_by_link_text(‘Sign In’)
-
find_elements_by_name
(name)¶ Finds elements by name.
Args: - name: The name of the elements to find.
Usage: driver.find_elements_by_name(‘foo’)
-
find_elements_by_partial_link_text
(link_text)¶ Finds elements by a partial match of their link text.
Args: - link_text: The text of the element to partial match on.
Usage: driver.find_element_by_partial_link_text(‘Sign’)
-
find_elements_by_sizzle
(sizzle_selector)¶ Return type: list of ContestoWebElement Raise: ElementNotFound
-
find_elements_by_tag_name
(name)¶ Finds elements by tag name.
Args: - name: The tag name the use when finding elements.
Usage: driver.find_elements_by_tag_name(‘foo’)
-
find_elements_by_xpath
(xpath)¶ Finds multiple elements by xpath.
Args: - xpath - The xpath locator of the elements to be found.
Usage: driver.find_elements_by_xpath(“//div[contains(@class, ‘foo’)]”)
-
forward
()¶ Goes one step forward in the browser history.
Usage: driver.forward()
-
get
(url)¶
Get a single cookie by name. Returns the cookie if found, None if not.
Usage: driver.get_cookie(‘my_cookie’)
Returns a set of dictionaries, corresponding to cookies visible in the current session.
Usage: driver.get_cookies()
-
get_log
(log_type)¶ Gets the log for a given log type
Args: - log_type: type of log that which will be returned
Usage: driver.get_log(‘browser’) driver.get_log(‘driver’) driver.get_log(‘client’) driver.get_log(‘server’)
-
get_screenshot_as_base64
()¶ - Gets the screenshot of the current window as a base64 encoded string
- which is useful in embedded images in HTML.
Usage: driver.get_screenshot_as_base64()
-
get_screenshot_as_file
(filename)¶ - Gets the screenshot of the current window. Returns False if there is
- any IOError, else returns True. Use full paths in your filename.
Args: - filename: The full path you wish to save your screenshot to.
Usage: driver.get_screenshot_as_file(‘/Screenshots/foo.png’)
-
get_screenshot_as_png
()¶ Gets the screenshot of the current window as a binary data.
Usage: driver.get_screenshot_as_png()
-
get_window_position
(windowHandle='current')¶ Gets the x,y position of the current window.
Usage: driver.get_window_position()
-
get_window_size
(windowHandle='current')¶ Gets the width and height of the current window.
Usage: driver.get_window_size()
-
implicitly_wait
(time_to_wait)¶ - Sets a sticky timeout to implicitly wait for an element to be found,
- or a command to complete. This method only needs to be called one time per session. To set the timeout for calls to execute_async_script, see set_script_timeout.
Args: - time_to_wait: Amount of time to wait (in seconds)
Usage: driver.implicitly_wait(30)
-
log_types
¶ Gets a list of the available log types
Usage: driver.log_types
-
maximize_window
()¶ Maximizes the current window that webdriver is using
-
mobile
¶
-
name
¶ Returns the name of the underlying browser for this instance.
Usage: - driver.name
-
orientation
¶ Gets the current orientation of the device
Usage: orientation = driver.orientation
-
page_loaded
()¶
-
page_source
¶ Gets the source of the current page.
Usage: driver.page_source
-
quit
()¶ Quits the driver and closes every associated window.
Usage: driver.quit()
-
refresh
()¶ Refreshes the current page.
Usage: driver.refresh()
-
save_screenshot
(filename)¶ - Gets the screenshot of the current window. Returns False if there is
- any IOError, else returns True. Use full paths in your filename.
Args: - filename: The full path you wish to save your screenshot to.
Usage: driver.get_screenshot_as_file(‘/Screenshots/foo.png’)
-
set_page_load_timeout
(time_to_wait)¶ - Set the amount of time to wait for a page load to complete
- before throwing an error.
Args: - time_to_wait: The amount of time to wait
Usage: driver.set_page_load_timeout(30)
-
set_script_timeout
(time_to_wait)¶ - Set the amount of time that the script should wait during an
- execute_async_script call before throwing an error.
Args: - time_to_wait: The amount of time to wait (in seconds)
Usage: driver.set_script_timeout(30)
-
set_window_position
(x, y, windowHandle='current')¶ Sets the x,y position of the current window. (window.moveTo)
Args: - x: the x-coordinate in pixels to set the window position
- y: the y-coordinate in pixels to set the window position
Usage: driver.set_window_position(0,0)
-
set_window_size
(width, height, windowHandle='current')¶ Sets the width and height of the current window. (window.resizeTo)
Args: - width: the width in pixels to set the window to
- height: the height in pixels to set the window to
Usage: driver.set_window_size(800,600)
-
start_client
()¶ Called before starting a new session. This method may be overridden to define custom startup behavior.
-
start_session
(desired_capabilities, browser_profile=None)¶ Creates a new session with the desired capabilities.
Args: - browser_name - The name of the browser to request.
- version - Which browser version to request.
- platform - Which platform to request the browser on.
- javascript_enabled - Whether the new session should support JavaScript.
- browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested.
-
stop_client
()¶ Called after executing a quit command. This method may be overridden to define custom shutdown behavior.
-
switch_to
¶
-
switch_to_active_element
()¶ Deprecated use driver.switch_to.active_element
-
switch_to_alert
()¶ Deprecated use driver.switch_to.alert
-
switch_to_default_content
()¶ Deprecated use driver.switch_to.default_content
-
switch_to_frame
(frame_reference)¶ Deprecated use driver.switch_to.frame
-
switch_to_window
(window_name)¶ Deprecated use driver.switch_to.window
-
title
¶ Returns the title of the current page.
Usage: driver.title
-
window_handles
¶ Returns the handles of all windows within the current session.
Usage: driver.window_handles
ContestoMobileDriver¶
-
class
contesto.core.driver.
ContestoMobileDriver
(*args, **kwargs)¶ -
activate_ime_engine
(engine)¶ Activates the given IME engine on the device. Android only.
Args: - engine - the package and activity of the IME engine to activate (e.g.,
- ‘com.android.inputmethod.latin/.LatinIME’)
-
active_ime_engine
¶ Returns the activity and package of the currently active IME engine (e.g., ‘com.android.inputmethod.latin/.LatinIME’). Android only.
Adds a cookie to your current session.
Args: - cookie_dict: A dictionary object, with required keys - “name” and “value”;
- optional keys - “path”, “domain”, “secure”, “expiry”
- Usage:
- driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’}) driver.add_cookie({‘name’ : ‘foo’, ‘value’ : ‘bar’, ‘path’ : ‘/’, ‘secure’:True})
-
app_strings
(language=None, string_file=None)¶ Returns the application strings from the device for the specified language.
Args: - language - strings language code
- string_file - the name of the string file to query
-
application_cache
¶ Returns a ApplicationCache Object to interact with the browser app cache
-
available_ime_engines
¶ Get the available input methods for an Android device. Package and activity are returned (e.g., [‘com.android.inputmethod.latin/.LatinIME’]) Android only.
-
back
()¶ Goes one step backward in the browser history.
Usage: driver.back()
-
background_app
(seconds)¶ Puts the application in the background on the device for a certain duration.
Args: - seconds - the duration for the application to remain in the background
-
close
()¶ Closes the current window.
Usage: driver.close()
-
close_app
()¶ Stop the running application, specified in the desired capabilities, on the device.
-
context
¶ Returns the current context of the current session.
Usage: driver.context
-
contexts
¶ Returns the contexts within the current session.
Usage: driver.contexts
-
create_web_element
(element_id)¶
-
current_activity
¶ Retrieves the current activity on the device.
-
current_context
¶ Returns the current context of the current session.
Usage: driver.current_context
-
current_url
¶ Gets the URL of the current page.
Usage: driver.current_url
-
current_window_handle
¶ Returns the handle of the current window.
Usage: driver.current_window_handle
-
deactivate_ime_engine
()¶ Deactivates the currently active IME engine on the device. Android only.
Delete all cookies in the scope of the session.
Usage: driver.delete_all_cookies()
Deletes a single cookie with the given name.
Usage: driver.delete_cookie(‘my_cookie’)
-
desired_capabilities
¶ returns the drivers current desired capabilities being used
-
device_time
¶ Returns the date and time fomr the device
-
drag_and_drop
(origin_el, destination_el)¶ Drag the origin element to the destination element
Args: - originEl - the element to drag
- destinationEl - the element to drag to
-
end_test_coverage
(intent, path)¶ Ends the coverage collection and pull the coverage.ec file from the device. Android only.
See https://github.com/appium/appium/blob/master/docs/en/android_coverage.md
Args: - intent - description of operation to be performed
- path - path to coverage.ec file to be pulled from the device
-
execute
(driver_command, params=None)¶
-
execute_async_script
(script, *args)¶ Asynchronously Executes JavaScript in the current window/frame.
Args: - script: The JavaScript to execute.
- *args: Any applicable arguments for your JavaScript.
Usage: driver.execute_async_script(‘document.title’)
-
execute_script
(script, *args)¶ Synchronously Executes JavaScript in the current window/frame.
Args: - script: The JavaScript to execute.
- *args: Any applicable arguments for your JavaScript.
Usage: driver.execute_script(‘document.title’)
-
file_detector
¶
-
find_element
(by='id', value=None)¶ ‘Private’ method used by the find_element_by_* methods.
Usage: Use the corresponding find_element_by_* instead of this. Return type: WebElement
-
find_element_by_accessibility_id
(id)¶ Finds an element by accessibility id.
Args: - id - a string corresponding to a recursive element search using the
Id/Name that the native Accessibility options utilize
Usage: driver.find_element_by_accessibility_id()
-
find_element_by_android_uiautomator
(uia_string)¶ Finds element by uiautomator in Android.
Args: - uia_string - The element name in the Android UIAutomator library
Usage: driver.find_element_by_android_uiautomator(‘.elements()[1].cells()[2]’)
-
find_element_by_class_name
(name)¶ Finds an element by class name.
Args: - name: The class name of the element to find.
Usage: driver.find_element_by_class_name(‘foo’)
-
find_element_by_css_selector
(css_selector)¶ Finds an element by css selector.
Args: - css_selector: The css selector to use when finding elements.
Usage: driver.find_element_by_css_selector(‘#foo’)
-
find_element_by_id
(id_)¶ Finds an element by id.
Args: - id_ - The id of the element to be found.
Usage: driver.find_element_by_id(‘foo’)
-
find_element_by_ios_predicate
(predicate_string)¶ Find an element by ios predicate string.
Args: - predicate_string - The predicate string
Usage: driver.find_element_by_ios_predicate(‘label == “myLabel”’)
-
find_element_by_ios_uiautomation
(uia_string)¶ Finds an element by uiautomation in iOS.
Args: - uia_string - The element name in the iOS UIAutomation library
Usage: driver.find_element_by_ios_uiautomation(‘.elements()[1].cells()[2]’)
-
find_element_by_link_text
(link_text)¶ Finds an element by link text.
Args: - link_text: The text of the element to be found.
Usage: driver.find_element_by_link_text(‘Sign In’)
-
find_element_by_name
(name)¶ Finds an element by name.
Args: - name: The name of the element to find.
Usage: driver.find_element_by_name(‘foo’)
-
find_element_by_partial_link_text
(link_text)¶ Finds an element by a partial match of its link text.
Args: - link_text: The text of the element to partially match on.
Usage: driver.find_element_by_partial_link_text(‘Sign’)
-
find_element_by_tag_name
(name)¶ Finds an element by tag name.
Args: - name: The tag name of the element to find.
Usage: driver.find_element_by_tag_name(‘foo’)
-
find_element_by_xpath
(xpath)¶ Finds an element by xpath.
Args: - xpath - The xpath locator of the element to find.
Usage: driver.find_element_by_xpath(‘//div/td[1]’)
-
find_elements
(by='id', value=None)¶ ‘Private’ method used by the find_elements_by_* methods.
Usage: Use the corresponding find_elements_by_* instead of this. Return type: list of WebElement
-
find_elements_by_accessibility_id
(id)¶ Finds elements by accessibility id.
Args: - id - a string corresponding to a recursive element search using the
Id/Name that the native Accessibility options utilize
Usage: driver.find_elements_by_accessibility_id()
-
find_elements_by_android_uiautomator
(uia_string)¶ Finds elements by uiautomator in Android.
Args: - uia_string - The element name in the Android UIAutomator library
Usage: driver.find_elements_by_android_uiautomator(‘.elements()[1].cells()[2]’)
-
find_elements_by_class_name
(name)¶ Finds elements by class name.
Args: - name: The class name of the elements to find.
Usage: driver.find_elements_by_class_name(‘foo’)
-
find_elements_by_css_selector
(css_selector)¶ Finds elements by css selector.
Args: - css_selector: The css selector to use when finding elements.
Usage: driver.find_elements_by_css_selector(‘.foo’)
-
find_elements_by_id
(id_)¶ Finds multiple elements by id.
Args: - id_ - The id of the elements to be found.
Usage: driver.find_elements_by_id(‘foo’)
-
find_elements_by_ios_predicate
(predicate_string)¶ Finds elements by ios predicate string.
Args: - predicate_string - The predicate string
Usage: driver.find_elements_by_ios_predicate(‘label == “myLabel”’)
-
find_elements_by_ios_uiautomation
(uia_string)¶ Finds elements by uiautomation in iOS.
Args: - uia_string - The element name in the iOS UIAutomation library
Usage: driver.find_elements_by_ios_uiautomation(‘.elements()[1].cells()[2]’)
-
find_elements_by_link_text
(text)¶ Finds elements by link text.
Args: - link_text: The text of the elements to be found.
Usage: driver.find_elements_by_link_text(‘Sign In’)
-
find_elements_by_name
(name)¶ Finds elements by name.
Args: - name: The name of the elements to find.
Usage: driver.find_elements_by_name(‘foo’)
-
find_elements_by_partial_link_text
(link_text)¶ Finds elements by a partial match of their link text.
Args: - link_text: The text of the element to partial match on.
Usage: driver.find_element_by_partial_link_text(‘Sign’)
-
find_elements_by_tag_name
(name)¶ Finds elements by tag name.
Args: - name: The tag name the use when finding elements.
Usage: driver.find_elements_by_tag_name(‘foo’)
-
find_elements_by_xpath
(xpath)¶ Finds multiple elements by xpath.
Args: - xpath - The xpath locator of the elements to be found.
Usage: driver.find_elements_by_xpath(“//div[contains(@class, ‘foo’)]”)
-
flick
(start_x, start_y, end_x, end_y)¶ Flick from one point to another point.
Args: - start_x - x-coordinate at which to start
- start_y - y-coordinate at which to start
- end_x - x-coordinate at which to stop
- end_y - y-coordinate at which to stop
Usage: driver.flick(100, 100, 100, 400)
-
forward
()¶ Goes one step forward in the browser history.
Usage: driver.forward()
-
get
(url)¶ Loads a web page in the current browser session.
Get a single cookie by name. Returns the cookie if found, None if not.
Usage: driver.get_cookie(‘my_cookie’)
Returns a set of dictionaries, corresponding to cookies visible in the current session.
Usage: driver.get_cookies()
-
get_log
(log_type)¶ Gets the log for a given log type
Args: - log_type: type of log that which will be returned
Usage: driver.get_log(‘browser’) driver.get_log(‘driver’) driver.get_log(‘client’) driver.get_log(‘server’)
-
get_screenshot_as_base64
()¶ - Gets the screenshot of the current window as a base64 encoded string
- which is useful in embedded images in HTML.
Usage: driver.get_screenshot_as_base64()
-
get_screenshot_as_file
(filename)¶ - Gets the screenshot of the current window. Returns False if there is
- any IOError, else returns True. Use full paths in your filename.
Args: - filename: The full path you wish to save your screenshot to.
Usage: driver.get_screenshot_as_file(‘/Screenshots/foo.png’)
-
get_screenshot_as_png
()¶ Gets the screenshot of the current window as a binary data.
Usage: driver.get_screenshot_as_png()
-
get_settings
()¶ Returns the appium server Settings for the current session. Do not get Settings confused with Desired Capabilities, they are separate concepts. See https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/settings.md
-
get_window_position
(windowHandle='current')¶ Gets the x,y position of the current window.
Usage: driver.get_window_position()
-
get_window_size
(windowHandle='current')¶ Gets the width and height of the current window.
Usage: driver.get_window_size()
-
hide_keyboard
(key_name=None, key=None, strategy=None)¶ Hides the software keyboard on the device. In iOS, use key_name to press a particular key, or strategy. In Android, no parameters are used.
Args: - key_name - key to press
- strategy - strategy for closing the keyboard (e.g., tapOutside)
-
implicitly_wait
(time_to_wait)¶ - Sets a sticky timeout to implicitly wait for an element to be found,
- or a command to complete. This method only needs to be called one time per session. To set the timeout for calls to execute_async_script, see set_script_timeout.
Args: - time_to_wait: Amount of time to wait (in seconds)
Usage: driver.implicitly_wait(30)
-
install_app
(app_path)¶ Install the application found at app_path on the device.
Args: - app_path - the local or remote path to the application to install
-
is_app_installed
(bundle_id)¶ Checks whether the application specified by bundle_id is installed on the device.
Args: - bundle_id - the id of the application to query
-
is_ime_active
()¶ Checks whether the device has IME service active. Returns True/False. Android only.
-
keyevent
(keycode, metastate=None)¶ Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
Args: - keycode - the keycode to be sent to the device
- metastate - meta information about the keycode being sent
-
launch_app
()¶ Start on the device the application specified in the desired capabilities.
-
lock
(seconds)¶ Lock the device for a certain period of time. iOS only.
Args: - the duration to lock the device, in seconds
-
log_types
¶ Gets a list of the available log types
Usage: driver.log_types
-
long_press_keycode
(keycode, metastate=None)¶ Sends a long press of keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
Args: - keycode - the keycode to be sent to the device
- metastate - meta information about the keycode being sent
-
maximize_window
()¶ Maximizes the current window that webdriver is using
-
mobile
¶
-
name
¶ Returns the name of the underlying browser for this instance.
Usage: - driver.name
-
network_connection
¶ Returns an integer bitmask specifying the network connection type. Android only. Possible values are available through the enumeration appium.webdriver.ConnectionType
-
open_notifications
()¶ Open notification shade in Android (API Level 18 and above)
-
orientation
¶ Gets the current orientation of the device
Usage: orientation = driver.orientation
-
page_source
¶ Gets the source of the current page.
Usage: driver.page_source
-
pinch
(element=None, percent=200, steps=50)¶ Pinch on an element a certain amount
Args: - element - the element to pinch
- percent - (optional) amount to pinch. Defaults to 200%
- steps - (optional) number of steps in the pinch action
Usage: driver.pinch(element)
-
press_keycode
(keycode, metastate=None)¶ Sends a keycode to the device. Android only. Possible keycodes can be found in http://developer.android.com/reference/android/view/KeyEvent.html.
Args: - keycode - the keycode to be sent to the device
- metastate - meta information about the keycode being sent
-
pull_file
(path)¶ Retrieves the file at path. Returns the file’s content encoded as Base64.
Args: - path - the path to the file on the device
-
pull_folder
(path)¶ Retrieves a folder at path. Returns the folder’s contents zipped and encoded as Base64.
Args: - path - the path to the folder on the device
-
push_file
(path, base64data)¶ Puts the data, encoded as Base64, in the file specified as path.
Args: - path - the path on the device
- base64data - data, encoded as Base64, to be written to the file
-
quit
()¶ Quits the driver and closes every associated window.
Usage: driver.quit()
-
refresh
()¶ Refreshes the current page.
Usage: driver.refresh()
-
remove_app
(app_id)¶ Remove the specified application from the device.
Args: - app_id - the application id to be removed
-
reset
()¶ Resets the current application on the device.
-
save_screenshot
(filename)¶ - Gets the screenshot of the current window. Returns False if there is
- any IOError, else returns True. Use full paths in your filename.
Args: - filename: The full path you wish to save your screenshot to.
Usage: driver.get_screenshot_as_file(‘/Screenshots/foo.png’)
-
scroll
(origin_el, destination_el)¶ Scrolls from one element to another
Args: - originalEl - the element from which to being scrolling
- destinationEl - the element to scroll to
Usage: driver.scroll(el1, el2)
-
set_location
(latitude, longitude, altitude)¶ Set the location of the device
Args: - latitude - String or numeric value between -90.0 and 90.00
- longitude - String or numeric value between -180.0 and 180.0
- altitude - String or numeric value
-
set_network_connection
(connectionType)¶ Sets the network connection type. Android only. Possible values:
0 (None) | 0 | 0 | 0 1 (Airplane Mode) | 0 | 0 | 1 2 (Wifi only) | 0 | 1 | 0 4 (Data only) | 1 | 0 | 0 6 (All network on) | 1 | 1 | 0These are available through the enumeration appium.webdriver.ConnectionType
Args: - connectionType - a member of the enum appium.webdriver.ConnectionType
-
set_page_load_timeout
(time_to_wait)¶ - Set the amount of time to wait for a page load to complete
- before throwing an error.
Args: - time_to_wait: The amount of time to wait
Usage: driver.set_page_load_timeout(30)
-
set_script_timeout
(time_to_wait)¶ - Set the amount of time that the script should wait during an
- execute_async_script call before throwing an error.
Args: - time_to_wait: The amount of time to wait (in seconds)
Usage: driver.set_script_timeout(30)
-
set_value
(element, value)¶ Set the value on an element in the application.
Args: - element - the element whose value will be set
- Value - the value to set on the element
-
set_window_position
(x, y, windowHandle='current')¶ Sets the x,y position of the current window. (window.moveTo)
Args: - x: the x-coordinate in pixels to set the window position
- y: the y-coordinate in pixels to set the window position
Usage: driver.set_window_position(0,0)
-
set_window_size
(width, height, windowHandle='current')¶ Sets the width and height of the current window. (window.resizeTo)
Args: - width: the width in pixels to set the window to
- height: the height in pixels to set the window to
Usage: driver.set_window_size(800,600)
-
shake
()¶ Shake the device.
-
start_activity
(app_package, app_activity, **opts)¶ Opens an arbitrary activity during a test. If the activity belongs to another application, that application is started and the activity is opened.
This is an Android-only method.
Args: - app_package - The package containing the activity to start.
- app_activity - The activity to start.
- app_wait_package - Begin automation after this package starts (optional).
- app_wait_activity - Begin automation after this activity starts (optional).
- intent_action - Intent to start (optional).
- intent_category - Intent category to start (optional).
- intent_flags - Flags to send to the intent (optional).
- optional_intent_arguments - Optional arguments to the intent (optional).
- dont_stop_app_on_reset - Should the app be stopped on reset (optional)?
-
start_client
()¶ Called before starting a new session. This method may be overridden to define custom startup behavior.
-
start_session
(desired_capabilities, browser_profile=None)¶ Creates a new session with the desired capabilities.
Args: - browser_name - The name of the browser to request.
- version - Which browser version to request.
- platform - Which platform to request the browser on.
- javascript_enabled - Whether the new session should support JavaScript.
- browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested.
-
stop_client
()¶ Called after executing a quit command. This method may be overridden to define custom shutdown behavior.
-
swipe
(start_x, start_y, end_x, end_y, duration=None)¶ Swipe from one point to another point, for an optional duration.
Args: - start_x - x-coordinate at which to start
- start_y - y-coordinate at which to start
- end_x - x-coordinate at which to stop
- end_y - y-coordinate at which to stop
- duration - (optional) time to take the swipe, in ms.
Usage: driver.swipe(100, 100, 100, 400)
-
switch_to
¶
-
switch_to_active_element
()¶ Deprecated use driver.switch_to.active_element
-
switch_to_alert
()¶ Deprecated use driver.switch_to.alert
-
switch_to_default_content
()¶ Deprecated use driver.switch_to.default_content
-
switch_to_frame
(frame_reference)¶ Deprecated use driver.switch_to.frame
-
switch_to_window
(window_name)¶ Deprecated use driver.switch_to.window
-
tap
(positions, duration=None)¶ Taps on an particular place with up to five fingers, holding for a certain time
Args: - positions - an array of tuples representing the x/y coordinates of
the fingers to tap. Length can be up to five. - duration - (optional) length of time to tap, in ms
Usage: driver.tap([(100, 20), (100, 60), (100, 100)], 500)
-
title
¶ Returns the title of the current page.
Usage: driver.title
-
toggle_location_services
()¶ Toggle the location services on the device. Android only.
-
touch_id
(match)¶ Do a fingerprint scan
-
update_settings
(settings)¶ Set settings for the current session. For more on settings, see: https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/settings.md
Args: - settings - dictionary of settings to apply to the current test session
-
wait_activity
(activity, timeout, interval=1)¶ Wait for an activity: block until target activity presents or time out.
This is an Android-only method.
Agrs: - activity - target activity
- timeout - max wait time, in seconds
- interval - sleep interval between retries, in seconds
-
window_handles
¶ Returns the handles of all windows within the current session.
Usage: driver.window_handles
-
zoom
(element=None, percent=200, steps=50)¶ Zooms in on an element a certain amount
Args: - element - the element to zoom
- percent - (optional) amount to zoom. Defaults to 200%
- steps - (optional) number of steps in the zoom action
Usage: driver.zoom(element)
-
Driver Mixin¶
AbstractDriverMixin¶
SeleniumDriverMixin¶
-
class
contesto.
SeleniumDriverMixin
¶ -
capabilities_map
= {'ie': {'javascriptEnabled': True, 'platform': 'WINDOWS', 'version': '', 'browserName': 'internet explorer'}, 'android': {'javascriptEnabled': True, 'platform': 'ANDROID', 'version': '', 'browserName': 'android'}, 'iphone': {'javascriptEnabled': True, 'platform': 'MAC', 'version': '', 'browserName': 'iPhone'}, 'phantomjs': {'javascriptEnabled': True, 'platform': 'ANY', 'version': '', 'browserName': 'phantomjs'}, 'phantom': {'javascriptEnabled': True, 'platform': 'ANY', 'version': '', 'browserName': 'phantomjs'}, 'ff': {'javascriptEnabled': True, 'platform': 'ANY', 'version': '', 'browserName': 'firefox', 'marionette': False}, 'internet explorer': {'javascriptEnabled': True, 'platform': 'WINDOWS', 'version': '', 'browserName': 'internet explorer'}, 'htmlunitjs': {'javascriptEnabled': True, 'platform': 'ANY', 'version': 'firefox', 'browserName': 'htmlunit'}, 'htmlunit': {'platform': 'ANY', 'version': '', 'browserName': 'htmlunit'}, 'opera': {'javascriptEnabled': True, 'platform': 'ANY', 'version': '', 'browserName': 'opera'}, 'chrome': {'javascriptEnabled': True, 'platform': 'ANY', 'version': '', 'browserName': 'chrome'}, 'iexplore': {'javascriptEnabled': True, 'platform': 'WINDOWS', 'version': '', 'browserName': 'internet explorer'}, 'ipad': {'javascriptEnabled': True, 'platform': 'MAC', 'version': '', 'browserName': 'iPad'}, 'firefox': {'javascriptEnabled': True, 'platform': 'ANY', 'version': '', 'browserName': 'firefox', 'marionette': False}, 'internetexplorer': {'javascriptEnabled': True, 'platform': 'WINDOWS', 'version': '', 'browserName': 'internet explorer'}, 'safari': {'javascriptEnabled': True, 'platform': 'MAC', 'version': '', 'browserName': 'safari'}}¶
-
driver_class
¶ alias of
ContestoWebDriver
-
driver_section
= 'selenium'¶
-
AndroidDriverMixin¶
Element¶
ContestoWebElement¶
-
class
contesto.core.element.
ContestoWebElement
(parent, id_, w3c=False)¶ -
clear
()¶ Clears the text if it’s a text entry element.
-
click
()¶ Raise: ElementNotFound
-
find_element
(by='id', value=None)¶
-
find_element_by_class_name
(name)¶ Finds element within this element’s children by class name.
Args: - name - class name to search for.
-
find_element_by_css_selector
(css_selector)¶ Finds element within this element’s children by CSS selector.
Args: - css_selector - CSS selctor string, ex: ‘a.nav#home’
-
find_element_by_id
(id_)¶ Finds element within this element’s children by ID.
Args: - id_ - ID of child element to locate.
-
find_element_by_link_text
(link_text)¶ Finds element within this element’s children by visible link text.
Args: - link_text - Link text string to search for.
-
find_element_by_name
(name)¶ Finds element within this element’s children by name.
Args: - name - name property of the element to find.
-
find_element_by_partial_link_text
(link_text)¶ Finds element within this element’s children by partially visible link text.
Args: - link_text - Link text string to search for.
-
find_element_by_sizzle
(sizzle_selector)¶ Return type: ContestoWebElement Raise: ElementNotFound
-
find_element_by_tag_name
(name)¶ Finds element within this element’s children by tag name.
Args: - name - name of html tag (eg: h1, a, span)
-
find_element_by_xpath
(xpath)¶ Finds element by xpath.
Args: xpath - xpath of element to locate. “//input[@class=’myelement’]” Note: The base path will be relative to this element’s location.
This will select the first link under this element.
myelement.find_elements_by_xpath(".//a")
However, this will select the first link on the page.
myelement.find_elements_by_xpath("//a")
-
find_elements
(by='id', value=None)¶
-
find_elements_by_class_name
(name)¶ Finds a list of elements within this element’s children by class name.
Args: - name - class name to search for.
-
find_elements_by_css_selector
(css_selector)¶ Finds a list of elements within this element’s children by CSS selector.
Args: - css_selector - CSS selctor string, ex: ‘a.nav#home’
-
find_elements_by_id
(id_)¶ Finds a list of elements within this element’s children by ID.
Args: - id_ - Id of child element to find.
-
find_elements_by_link_text
(link_text)¶ Finds a list of elements within this element’s children by visible link text.
Args: - link_text - Link text string to search for.
-
find_elements_by_name
(name)¶ Finds a list of elements within this element’s children by name.
Args: - name - name property to search for.
-
find_elements_by_partial_link_text
(link_text)¶ Finds a list of elements within this element’s children by link text.
Args: - link_text - Link text string to search for.
-
find_elements_by_sizzle
(sizzle_selector)¶ Return type: list of ContestoWebElement Raise: ElementNotFound
-
find_elements_by_tag_name
(name)¶ Finds a list of elements within this element’s children by tag name.
Args: - name - name of html tag (eg: h1, a, span)
-
find_elements_by_xpath
(xpath)¶ Finds elements within the element by xpath.
Args: - xpath - xpath locator string.
Note: The base path will be relative to this element’s location.
This will select all links under this element.
myelement.find_elements_by_xpath(".//a")
However, this will select all links in the page itself.
myelement.find_elements_by_xpath("//a")
-
get_attribute
(name)¶ Gets the given attribute or property of the element.
This method will first try to return the value of a property with the given name. If a property with that name doesn’t exist, it returns the value of the attribute with the same name. If there’s no attribute with that name,
None
is returned.Values which are considered truthy, that is equals “true” or “false”, are returned as booleans. All other non-
None
values are returned as strings. For attributes or properties which do not exist,None
is returned.Args: - name - Name of the attribute/property to retrieve.
Example:
# Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")
-
id
¶ Internal ID used by selenium.
This is mainly for internal use. Simple use cases such as checking if 2 webelements refer to the same element, can be done using
==
:if element1 == element2: print("These 2 are equal")
-
is_displayed
()¶ Whether the element is visible to a user.
-
is_enabled
()¶ Returns whether the element is enabled.
-
is_selected
()¶ Returns whether the element is selected.
Can be used to check if a checkbox or radio button is selected.
-
js_click
()¶
-
location
¶ The location of the element in the renderable canvas.
-
location_once_scrolled_into_view
¶ THIS PROPERTY MAY CHANGE WITHOUT WARNING. Use this to discover where on the screen an element is so that we can click it. This method should cause the element to be scrolled into view.
Returns the top lefthand corner location on the screen, or
None
if the element is not visible.
-
parent
¶ Internal reference to the WebDriver instance this element was found from.
-
rect
¶ A dictionary with the size and location of the element.
-
screenshot
(filename)¶ - Gets the screenshot of the current element. Returns False if there is
- any IOError, else returns True. Use full paths in your filename.
Args: - filename: The full path you wish to save your screenshot to.
Usage: element.screenshot(‘/Screenshots/foo.png’)
-
screenshot_as_base64
¶ Gets the screenshot of the current element as a base64 encoded string.
Usage: img_b64 = element.screenshot_as_base64
-
screenshot_as_png
¶ Gets the screenshot of the current element as a binary data.
Usage: element_png = element.screenshot_as_png
-
send_keys
(*value)¶ Simulates typing into the element.
Args: - value - A string for typing, or setting form fields. For setting
file inputs, this could be a local file path.
Use this to send simple key events or to fill out form fields:
form_textfield = driver.find_element_by_name('username') form_textfield.send_keys("admin")
This can also be used to set file inputs.
file_input = driver.find_element_by_name('profilePic') file_input.send_keys("path/to/profilepic.gif") # Generally it's better to wrap the file path in one of the methods # in os.path to return the actual path to support cross OS testing. # file_input.send_keys(os.path.abspath("path/to/profilepic.gif"))
-
size
¶ The size of the element.
-
submit
()¶ Submits a form.
-
tag_name
¶ This element’s
tagName
property.
-
text
¶ The text of the element.
-
value_of_css_property
(property_name)¶ The value of a CSS property.
-
ContestoMobileElement¶
-
class
contesto.core.element.
ContestoMobileElement
(parent, id_, w3c=False)¶ -
clear
()¶ Clears text.
-
click
()¶ Clicks the element.
-
find_element
(by='id', value=None)¶
-
find_element_by_accessibility_id
(id)¶ Finds an element by accessibility id.
Args: - id - a string corresponding to a recursive element search using the
Id/Name that the native Accessibility options utilize
Usage: driver.find_element_by_accessibility_id()
-
find_element_by_android_uiautomator
(uia_string)¶ Finds element by uiautomator in Android.
Args: - uia_string - The element name in the Android UIAutomator library
Usage: driver.find_element_by_android_uiautomator(‘.elements()[1].cells()[2]’)
-
find_element_by_class_name
(name)¶ Finds element within this element’s children by class name.
Args: - name - class name to search for.
-
find_element_by_css_selector
(css_selector)¶ Finds element within this element’s children by CSS selector.
Args: - css_selector - CSS selctor string, ex: ‘a.nav#home’
-
find_element_by_id
(id_)¶ Finds element within this element’s children by ID.
Args: - id_ - ID of child element to locate.
-
find_element_by_ios_predicate
(predicate_string)¶ Find an element by ios predicate string.
Args: - predicate_string - The predicate string
Usage: driver.find_element_by_ios_predicate(‘label == “myLabel”’)
-
find_element_by_ios_uiautomation
(uia_string)¶ Finds an element by uiautomation in iOS.
Args: - uia_string - The element name in the iOS UIAutomation library
Usage: driver.find_element_by_ios_uiautomation(‘.elements()[1].cells()[2]’)
-
find_element_by_link_text
(link_text)¶ Finds element within this element’s children by visible link text.
Args: - link_text - Link text string to search for.
-
find_element_by_name
(name)¶ Finds element within this element’s children by name.
Args: - name - name property of the element to find.
-
find_element_by_partial_link_text
(link_text)¶ Finds element within this element’s children by partially visible link text.
Args: - link_text - Link text string to search for.
-
find_element_by_tag_name
(name)¶ Finds element within this element’s children by tag name.
Args: - name - name of html tag (eg: h1, a, span)
-
find_element_by_xpath
(xpath)¶ Finds element by xpath.
Args: xpath - xpath of element to locate. “//input[@class=’myelement’]” Note: The base path will be relative to this element’s location.
This will select the first link under this element.
myelement.find_elements_by_xpath(".//a")
However, this will select the first link on the page.
myelement.find_elements_by_xpath("//a")
-
find_elements
(by='id', value=None)¶
-
find_elements_by_accessibility_id
(id)¶ Finds elements by accessibility id.
Args: - id - a string corresponding to a recursive element search using the
Id/Name that the native Accessibility options utilize
Usage: driver.find_elements_by_accessibility_id()
-
find_elements_by_android_uiautomator
(uia_string)¶ Finds elements by uiautomator in Android.
Args: - uia_string - The element name in the Android UIAutomator library
Usage: driver.find_elements_by_android_uiautomator(‘.elements()[1].cells()[2]’)
-
find_elements_by_class_name
(name)¶ Finds a list of elements within this element’s children by class name.
Args: - name - class name to search for.
-
find_elements_by_css_selector
(css_selector)¶ Finds a list of elements within this element’s children by CSS selector.
Args: - css_selector - CSS selctor string, ex: ‘a.nav#home’
-
find_elements_by_id
(id_)¶ Finds a list of elements within this element’s children by ID.
Args: - id_ - Id of child element to find.
-
find_elements_by_ios_predicate
(predicate_string)¶ Finds elements by ios predicate string.
Args: - predicate_string - The predicate string
Usage: driver.find_elements_by_ios_predicate(‘label == “myLabel”’)
-
find_elements_by_ios_uiautomation
(uia_string)¶ Finds elements by uiautomation in iOS.
Args: - uia_string - The element name in the iOS UIAutomation library
Usage: driver.find_elements_by_ios_uiautomation(‘.elements()[1].cells()[2]’)
-
find_elements_by_link_text
(link_text)¶ Finds a list of elements within this element’s children by visible link text.
Args: - link_text - Link text string to search for.
-
find_elements_by_name
(name)¶ Finds a list of elements within this element’s children by name.
Args: - name - name property to search for.
-
find_elements_by_partial_link_text
(link_text)¶ Finds a list of elements within this element’s children by link text.
Args: - link_text - Link text string to search for.
-
find_elements_by_tag_name
(name)¶ Finds a list of elements within this element’s children by tag name.
Args: - name - name of html tag (eg: h1, a, span)
-
find_elements_by_xpath
(xpath)¶ Finds elements within the element by xpath.
Args: - xpath - xpath locator string.
Note: The base path will be relative to this element’s location.
This will select all links under this element.
myelement.find_elements_by_xpath(".//a")
However, this will select all links in the page itself.
myelement.find_elements_by_xpath("//a")
-
get_attribute
(name)¶ Gets the given attribute or property of the element.
This method will first try to return the value of a property with the given name. If a property with that name doesn’t exist, it returns the value of the attribute with the same name. If there’s no attribute with that name,
None
is returned.Values which are considered truthy, that is equals “true” or “false”, are returned as booleans. All other non-
None
values are returned as strings. For attributes or properties which do not exist,None
is returned.Args: - name - Name of the attribute/property to retrieve.
Example:
# Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class")
-
id
¶ Internal ID used by selenium.
This is mainly for internal use. Simple use cases such as checking if 2 webelements refer to the same element, can be done using
==
:if element1 == element2: print("These 2 are equal")
-
is_displayed
()¶ Whether the element is visible to a user.
-
is_enabled
()¶ Returns whether the element is enabled.
-
is_selected
()¶ Returns whether the element is selected.
Can be used to check if a checkbox or radio button is selected.
-
location
¶ The location of the element in the renderable canvas.
-
location_in_view
¶ Gets the location of an element relative to the view.
Usage: location = element.location_in_view
-
location_once_scrolled_into_view
¶ THIS PROPERTY MAY CHANGE WITHOUT WARNING. Use this to discover where on the screen an element is so that we can click it. This method should cause the element to be scrolled into view.
Returns the top lefthand corner location on the screen, or
None
if the element is not visible.
-
parent
¶ Internal reference to the WebDriver instance this element was found from.
-
rect
¶ A dictionary with the size and location of the element.
-
screenshot
(filename)¶ - Gets the screenshot of the current element. Returns False if there is
- any IOError, else returns True. Use full paths in your filename.
Args: - filename: The full path you wish to save your screenshot to.
Usage: element.screenshot(‘/Screenshots/foo.png’)
-
screenshot_as_base64
¶ Gets the screenshot of the current element as a base64 encoded string.
Usage: img_b64 = element.screenshot_as_base64
-
screenshot_as_png
¶ Gets the screenshot of the current element as a binary data.
Usage: element_png = element.screenshot_as_png
-
send_keys
(*value)¶ Simulates typing into the element.
Args: - value - A string for typing, or setting form fields. For setting
file inputs, this could be a local file path.
Use this to send simple key events or to fill out form fields:
form_textfield = driver.find_element_by_name('username') form_textfield.send_keys("admin")
This can also be used to set file inputs.
file_input = driver.find_element_by_name('profilePic') file_input.send_keys("path/to/profilepic.gif") # Generally it's better to wrap the file path in one of the methods # in os.path to return the actual path to support cross OS testing. # file_input.send_keys(os.path.abspath("path/to/profilepic.gif"))
-
set_text
(keys='')¶ Sends text to the element. Previous text is removed. Android only.
Args: - keys - the text to be sent to the element.
Usage: element.set_text(‘some text’)
-
set_value
(value)¶ Set the value on this element in the application
-
size
¶ The size of the element.
-
submit
()¶ Submits a form.
-
tag_name
¶ This element’s
tagName
property.
-
text
¶ The text of the element.
-
value_of_css_property
(property_name)¶ The value of a CSS property.
-
Finding Elements¶
Find¶
-
contesto.
find_element
(obj, locator, timeout=None)¶
-
contesto.
find_elements
(obj, locator, timeout=None)¶
Locator¶
-
class
contesto.
Locator
(by, value)¶
classical¶
-
contesto.
by_id
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
-
contesto.
by_xpath
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
-
contesto.
by_link_text
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
-
contesto.
by_partial_link_text
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
-
contesto.
by_name
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
-
contesto.
by_tag_name
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
mobile additional¶
-
class
contesto.
JavaUiSelector
¶
-
contesto.
by_uiautomator
(value)¶ partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.
Utils¶
Screencast¶
Install ffmpeg:
sudo add-apt-repository --yes ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get install -y ffmpeg
Install stf-utils:
pip install git+https://github.com/2gis/stf-utils.git
Record screencast¶
-
contesto.utils.screencast.
start_screencast_recorder
()¶ Creates and starts ScreencastRecorder for current test, which will spawn stf-record process and save screenshots from device connected via stf-connect to screencast_dir
-
contesto.utils.screencast.
stop_screencast_recorder
()¶ Stops ScreencastRecorder for current test
-
contesto.utils.screencast.
try_to_attach_screencast_to_results
()¶ Tries to create .webm video using ffmpeg from screenshots saved via ScreencastRecorder and attach this video with current_test._meta_info. Stops ScreencastRecorder if it is not stopped yet.