from io import BytesIO import allure from PIL import Image from app.src.ui_elements.base_ui_element import BaseUIElement class ButtonUIElement(BaseUIElement): @allure.step("Clicking on {0}") def click(self, to_assert=False, timeout=3): self.wait(to_assert=to_assert, timeout=timeout) self._element.click() @property @allure.step("Getting text of {0}") def text(self): text = self._element.text if not text: text = self._element.get_attribute("innerText") return text.strip() @property @allure.step("Getting image of {0}") def image(self): return Image.open(BytesIO(self._element.screenshot_as_png)) @property def label(self): return self._element.get_attribute("label") def __str__(self): return f"Button {self.name}"