macos上的自动化测试
atomacos的Python项目详细描述
atomacos:macos上的自动测试
这个库是atomac的分叉。 创建它是为了提供一个支持python 3的版本,因为 尚未发布since 2013
a to macos是一个库,可以通过apple可访问性api对macos应用程序进行gui测试。 atomacos可以通过pyobjc直接访问api。编写测试既快捷又容易。
入门
要求
- MacOS
- pyobjc
- 已启用系统范围的可访问性
在travis上,它只在10.11上运行,因为我们能够启用可访问性api。
如果您遇到问题,请在issue tracker中打开一张罚单。
启用全系统辅助功能
选中复选框:
System Preferences > Universal Access > Enable access for assistive devices
System Preferences > Security & Privacy > Privacy > Accessibility
如果不启用此选项,则在某些模块使用期间将导致AXErrorAPIDisabled
异常。
安装
用于释放
$ pip install atomacos
用于预发布
$ pip install --pre atomacos
用法示例
安装后,您应该可以使用它启动应用程序:
>>>importatomacos>>>atomacos.launchAppByBundleId('com.apple.Automator')
这将启动自动机。
接下来,获取应用程序本身的ui元素的引用:
>>>automator=atomacos.getAppRefByBundleId('com.apple.Automator')>>>automator<atomacos.AXClasses.NativeUIElementAXApplicationAutomator>
现在,我们可以在辅助功能层次结构中找到对象:
>>>window=automator.windows()[0]>>>window.AXTitleu'Untitled'>>>sheet=window.sheets()[0]
注意,我们从窗口对象-AXTitle
中检索了一个可访问性属性。
atomacos支持大多数属性的读写。
xcode包含的Accessibility Inspector
可以提供一种快速查找这些属性的方法。
有一个获取sheet对象的快捷方式 绕过通过窗口对象访问它。 atomacos可以搜索层次结构中的所有对象:
>>>sheet=automator.sheetsR()[0]
大多数类型的可访问性对象都有搜索方法。
每个搜索方法,例如windows
,
具有相应的递归搜索函数,例如windowsR
。
递归搜索查找的项不只是直接子项,而是子项的子项。
这些搜索方法可以被赋予识别特定元素的术语。
注意,*
和?
可以用作所有搜索方法中的通配符匹配字符:
>>>close=sheet.buttons('Close')[0]
有一些方法可以搜索符合任意数量条件的ui元素。 条件是辅助功能属性:
>>>close=sheet.findFirst(AXRole='AXButton',AXTitle='Close')
findFirst
和findFirstR
返回找到的与条件匹配的第一个项或None
。
findAll
和findAllR
返回所有符合条件的项的列表或空列表([]
)。
对象相当多用。 您可以获取对象上支持的属性和操作的列表:
>>>close.getAttributes()[u'AXRole',u'AXRoleDescription',u'AXHelp',u'AXEnabled',u'AXFocused',u'AXParent',u'AXWindow',u'AXTopLevelUIElement',u'AXPosition',u'AXSize',u'AXTitle']>>>close.AXTitleu'Close'>>>close.getActions()[u'Press']
执行一个动作是很自然的:
>>>close.Press()
任何动作都可以这样触发。