# Getting Started
To get started with , follow these steps: ## 1. Installation Install Mops via pip: ```bash pip3 install mops ``` --- ## 2. Write Simple Page Object
```{note} For the PageObject example, the [UI Automation Playground](https://customenv.github.io/test-automation-playground/) site is used. ``` ```python 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 ```python 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 ```python 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 ``` ```python 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
```python 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