Source code for poco.drivers.osx.sdk.OSXUINode

# coding=utf-8

from poco.sdk.exceptions import UnableToSetAttributeException
from poco.sdk.AbstractNode import AbstractNode
from poco.utils.six import string_types


[docs]class OSXUINode(AbstractNode): def __init__(self, control, dumper): self.Control = control self.dumper = dumper
[docs] def getParent(self): return OSXUINode(self.Control.AXParent, self.dumper)
[docs] def getChildren(self): childs = self.Control.AXChildren if childs is not None: for node in childs: yield OSXUINode(node, self.dumper)
[docs] def getAttr(self, attrName): attrs = self.Control.getAttributes() if attrName == 'name': if 'AXTitle' in attrs: if self.Control.AXTitle != "" and self.Control.AXTitle is not None: return self.Control.AXTitle if 'AXRole' in attrs: return self.Control.AXRole[2:] if attrName == 'originType': if 'AXRole' in attrs: return self.Control.AXRole return "Unknow" if attrName == 'type': if 'AXRole' in attrs: return self.Control.AXRole[2:] return "Unknow" if attrName == 'pos': pos = self.Control.AXPosition size = self.Control.AXSize return [float(pos[0] + size[0] / 2.0 - self.dumper.RootLeft) / float(self.dumper.RootWidth), float(pos[1] + size[1] / 2.0 - self.dumper.RootTop) / float(self.dumper.RootHeight)] if attrName == 'size': pos = self.Control.AXPosition size = self.Control.AXSize return [size[0] / float(self.dumper.RootWidth), size[1] / float(self.dumper.RootHeight)] if attrName == 'text': if 'AXValue' in attrs: if isinstance(self.Control.AXValue, string_types): return self.Control.AXValue if isinstance(self.Control.AXValue, int): return str(self.Control.AXValue) if isinstance(self.Control.AXValue, float): return str(self.Control.AXValue) return None return super(OSXUINode, self).getAttr(attrName)
[docs] def setAttr(self, attrName, val): attrs = self.Control.getAttributes() if attrName != 'text': raise UnableToSetAttributeException(attrName, self) else: if 'AXValue' in attrs: self.Control.AXValue = val else: raise UnableToSetAttributeException(attrName, self)
[docs] def getAvailableAttributeNames(self): if 'AXValue' in self.Control.getAttributes(): return super(OSXUINode, self).getAvailableAttributeNames() + ('text', 'originType') else: return super(OSXUINode, self).getAvailableAttributeNames() + ('originType', )