Getting Started¶
To get started with
1. Installation¶
Install Mops via pip:
pip3 install mops
2. Write Simple Page Object¶
Note
For the PageObject example, the UI Automation Playground site is used.
from mops.base.element import Element
from mops.base.group import Group
from mops.base.page import Page
class Card(Group):
view_page_button = Element('//a[.="View Page"]', name='view page button')
def click_view_page_button(self):
self.view_page_button.click()
class BasicControlsSection(Group):
def __init__(self):
super().__init__('//*[contains(@class, "card") and .//*[.="Basic Form Controls"]]', name='For page')
python_checkbox = Element('check_python', name='python checkbox')
checkbox_label = Element('check_validate', name='checkbox label')
class FormsPage(Page):
def __init__(self):
super().__init__('.container', name='Forms page')
controls_section = BasicControlsSection()
class MainPage(Page):
def __init__(self):
super().__init__('//h1[.="The Playground"]', name='Playground page')
frames_card = Card('//*[contains(@class, "card") and contains(., "Frames")]', name='frames card')
def navigate_to_frames_page(self) -> FormsPage:
self.frames_card.click_view_page()
return FormsPage()
3. Set Up The Driver¶
Selenium driver setup¶
import pytest # noqa
from selenium.webdriver.chrome.webdriver import WebDriver as ChromeWebDriver
from mops.base.driver_wrapper import DriverWrapper
from mops.mixins.objects.driver import Driver
@pytest.fixture
def driver_wrapper():
selenium_driver = Driver(driver=ChromeWebDriver())
return DriverWrapper(selenium_driver)
Appium driver setup¶
import pytest # noqa
from appium.webdriver.webdriver import WebDriver as SourceAppiumDriver
from appium.options.common.base import AppiumOptions
from mops.base.driver_wrapper import DriverWrapper
from mops.mixins.objects.driver import Driver
@pytest.fixture
def driver_wrapper():
caps = {} # Your device capabilities
appium_ip, appium_port = None, None # Your appium ip and port
options = AppiumOptions().load_capabilities(caps)
appium_driver = SourceAppiumDriver(
command_executor=f'http://{appium_ip}:{appium_port}/wd/hub',
options=options
)
return DriverWrapper(Driver(driver=appium_driver))
Playwright driver setup¶
Attention
Mops supports only sync API of playwright
import pytest # noqa
from playwright.sync_api import sync_playwright
from mops.mixins.objects.driver import Driver
from mops.base.driver_wrapper import DriverWrapper
@pytest.fixture
def driver_wrapper():
instance = sync_playwright().start().chromium.launch()
context = instance.new_context()
page = context.new_page()
return DriverWrapper(Driver(driver=page, context=context, instance=instance))
4. Write A Test¶
from ... import MainPage # noqa
# pytest function
def test_example(driver_wrapper):
driver_wrapper.get("https://customenv.github.io/test-automation-playground/")
forms_page = MainPage().navigate_to_frames_page()
assert forms_page.is_page_opened(), 'Forms Page is not opened after navigation'
assert not forms_page.controls_section.checkbox_label.is_visible(), 'Checkbox label unexpectedly visible'
forms_page.controls_section.python_checkbox.click()
assert forms_page.controls_section.checkbox_label.text == 'PYTHON'
For detailed information, please refer to the next section of the documentation that addresses your questions