Welcome to Contesto’s documentation!

Installation

pip install -U git+https://github.com/2gis/contesto.git#egg=contesto

Quick start

  1. download selenium-server-standalone

  2. run it:

    java -jar selenium-server-standalone-x.x.x.jar
    
  3. 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 – are command 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 with contesto.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))

Page

Page

class contesto.Page(driver)

The main point of Page is encapsulate page elements for mobile, web or desktop application.

get_source()
register_onload_elements(elements)
register_onload_hooks(hooks)

WebPage

class contesto.WebPage(driver)

The main point of Page is encapsulate page elements for mobile, web or desktop application.

back()
forward()
get_source()
refresh()
register_onload_elements(elements)
register_onload_hooks(hooks)
url

MobilePage

class contesto.MobilePage(driver)
get_source()
register_onload_elements(elements)
register_onload_hooks(hooks)
scroll_page(x, y)

Component

Component

class contesto.Component(driver, element=None)
register_onload_elements(elements)
register_onload_hooks(hooks)

WebComponent

contesto.WebComponent

alias of 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()
browser
Return type:str
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()

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’)

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’)

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’)

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’)

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’)
get_cookies()

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

testMethodName
Return type:str
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()

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]’)

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’)

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]’)

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’)

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’)
get_cookies()

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 | 0

These 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)

testMethodName
Return type:str
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

class contesto.AbstractDriverMixin
driver_class = None
driver_section = None

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

class contesto.AndroidDriverMixin
driver_class

alias of ContestoMobileDriver

driver_section = 'androiddriver'

IosDriverMixin

class contesto.IosDriverMixin
driver_class

alias of ContestoMobileDriver

driver_section = 'iosdriver'

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.

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.

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.

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.

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]’)

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.

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]’)

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.

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.

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

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.

contesto.by_class_name(value)

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

contesto.by_css_selector(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.

contesto.by_uiautomation(value)

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

contesto.by_accessibility_id(value)

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

contesto additional

contesto.by_sizzle(value)

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

Utils

Screenshot

Save screenshot on error

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.