Page Object Model
Create a
base_page.py
file with aBasePage
class that contains common methods used by all page objects:
class BasePage:
def __init__(self, driver):
self.driver = driver
def click(self, locator):
self.driver.find_element(*locator).click()
def enter_text(self, locator, text):
self.driver.find_element(*locator).send_keys(text)
def get_element_text(self, locator):
return self.driver.find_element(*locator).text
Create a
calculator_page.py
file that represents the calculator screen and inherits fromBasePage
:
from selenium.webdriver.common.by import By
from base_page import BasePage
class CalculatorPage(BasePage):
DISPLAY_RESULT = (By.ID, "result")
DIGIT_BUTTONS = (By.CLASS_NAME, "digit")
def get_display_result(self):
return self.get_element_text(self.DISPLAY_RESULT)
def enter_digit(self, digit):
locator = (self.DIGIT_BUTTONS[0], "{}Button".format(digit))
self.click(locator)
Create a
test_calculator.py
file to write the tests:
from appium import webdriver
from calculator_page import CalculatorPage
class TestCalculator:
def setup_method(self):
desired_caps = {
"platformName": "Android",
"platformVersion": "10.0",
"deviceName": "Android Emulator",
"appPackage": "com.android.calculator2",
"appActivity": "com.android.calculator2.Calculator",
"noReset": True
}
self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
def teardown_method(self):
self.driver.quit()
def test_calculator_addition(self):
calculator_page = CalculatorPage(self.driver)
calculator_page.enter_digit(1)
calculator_page.enter_digit(0)
calculator_page.enter_digit(0)
calculator_page.click(CalculatorPage.PLUS)
calculator_page.enter_digit(2)
calculator_page.enter_digit(0)
calculator_page.enter_digit(0)
assert calculator_page.get_display_result() == "300"
Last updated