macos上的自动化测试

atomacos的Python项目详细描述


atomacos:macos上的自动测试

licensepypiBuild Statuscodecovstyle

这个库是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')

findFirstfindFirstR返回找到的与条件匹配的第一个项或NonefindAllfindAllR返回所有符合条件的项的列表或空列表([])。

对象相当多用。 您可以获取对象上支持的属性和操作的列表:

>>>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()

任何动作都可以这样触发。

链接

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
返回数组无效的java方法   异步Java CompletableFuture获取其请求   java是否可以像RDBMS那样使用视图?   java如何在屏幕上只运行一个片段?   java无法从Vertex jdbc查询中获取结果   java从jtable获取对象的正确方法   java Spring 3数据设备替代方案   Java BigDecimal:四舍五入到客户首选的数字和增量   JAVA主窗口没有出现,我必须左键单击主窗口。java并单击run查看它   Eclipse RCP中的java进程自定义设备事件   JavaEclipse一次又一次地构建代码(没有任何更改)?   java如何实现对象合并