Getting Started¶
To get started with Dyatel Wrapper, follow these steps:
1. Installation¶
Install Dyatel Wrapper via pip:
pip3 install dyatel-wrapper
2. Write Simple Page Object¶
Note
For the PageObject example, the Dyatel Wrapper Playground page is used.
from dyatel.base.element import Element
from dyatel.base.group import Group
from dyatel.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 dyatel.base.driver_wrapper import DriverWrapper
from dyatel.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 dyatel.base.driver_wrapper import DriverWrapper
from dyatel.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
Dyatel Wrapper supports only sync API of playwright
import pytest # noqa
from playwright.sync_api import sync_playwright
from dyatel.mixins.objects.driver import Driver
from dyatel.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 == 'PYTHON'
For detailed information, please refer to the next section of the documentation that addresses your questions