feat: proxy element props

This commit is contained in:
2026-07-05 18:33:25 +08:00
parent 6a4b1998fc
commit 87975760ae
+71 -11
View File
@@ -352,6 +352,14 @@ class HierarchyButton:
else: else:
return None return None
@cached_property
def size(self):
if self.area is not None:
lx, ly, rx, ry = self.area
return rx - lx, ry - ly
else:
return None
@cached_property @cached_property
def button(self): def button(self):
return self.area return self.area
@@ -362,19 +370,71 @@ class HierarchyButton:
def __str__(self): def __str__(self):
return self.name return self.name
@cached_property """
def focused(self): Element props
if self.exist: """
return self.attrib.get("focused").lower() == 'true'
else: def _get_bool_prop(self, prop: str) -> bool:
return False return self.attrib.get(prop, "").lower() == 'true'
@cached_property @cached_property
def text(self): def index(self) -> int:
if self.exist: try:
return self.attrib.get("text").strip() return int(self.attrib.get("index", 0))
else: except IndexError:
return "" return 0
@cached_property
def text(self) -> str:
return self.attrib.get("text", "").strip()
@cached_property
def resourceId(self) -> str:
return self.attrib.get("resourceId", "").strip()
@cached_property
def package(self) -> str:
return self.attrib.get("resourceId", "").strip()
@cached_property
def description(self) -> str:
return self.attrib.get("resourceId", "").strip()
@cached_property
def checkable(self) -> bool:
return self._get_bool_prop('checkable')
@cached_property
def clickable(self) -> bool:
return self._get_bool_prop('clickable')
@cached_property
def enabled(self) -> bool:
return self._get_bool_prop('enabled')
@cached_property
def fucusable(self) -> bool:
return self._get_bool_prop('fucusable')
@cached_property
def focused(self) -> bool:
return self._get_bool_prop('focused')
@cached_property
def scrollable(self) -> bool:
return self._get_bool_prop('scrollable')
@cached_property
def longClickable(self) -> bool:
return self._get_bool_prop('longClickable')
@cached_property
def password(self) -> bool:
return self._get_bool_prop('password')
@cached_property
def selected(self) -> bool:
return self._get_bool_prop('selected')
class AreaButton: class AreaButton: