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