e-nms_qa_automation/components/base_component.py

48 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from playwright.sync_api import Page, Locator, expect
from tools.logger import get_logger
logger = get_logger("BASE_COMPONENT")
class BaseComponent:
"""Базовый компонент для работы с элементами страницы."""
def __init__(self, page: Page):
self.page = page
def get_locator(self, locator: str | Locator) -> Locator:
if isinstance(locator, Locator):
return locator
elif isinstance(locator, str):
return self.page.locator(locator)
else:
raise TypeError("locator value should be string type or Locator type")
def check_presence(self, locator: str | Locator, msg: str):
loc = self.get_locator(locator)
expect(loc).to_be_visible(visible=True, timeout=12000), msg
def is_scrollable_vertically(self, locator: str | Locator) -> bool:
loc = self.get_locator(locator)
return loc.evaluate("el => el.scrollHeight > el.clientHeight")
def is_scrollable_horizontally(self, locator: str | Locator) -> bool:
loc = self.get_locator(locator)
return loc.evaluate("el => el.scrollWidth > el.clientWidth")
def scroll_up(self, locator: str | Locator):
loc = self.get_locator(locator)
loc.evaluate("el => el.scrollTo(0, 0)")
def scroll_down(self, locator: str | Locator):
loc = self.get_locator(locator)
loc.evaluate("el => el.scrollTo(0, el.scrollHeight)")
def scroll_left(self, locator: str | Locator):
loc = self.get_locator(locator)
width = loc.evaluate("el => el.scrollWidth")
def scroll_right(self, locator: str | Locator):
loc = self.get_locator(locator)
width = loc.evaluate("el => el.scrollWidth")