前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于ATOMac框架测试Mac系统应用

基于ATOMac框架测试Mac系统应用

作者头像
测试加
发布2022-03-24 15:56:37
8290
发布2022-03-24 15:56:37
举报
文章被收录于专栏:用户4624600的专栏

背景

我们公司有台测试mac笔记本,需要长时间登录qq.但是由于一些异常问题,导致这个qq经常掉线.所以想写一个小脚本来定时自动化登录qq.

最开始的想法是使用appium,但是看了官方文档,也没找到可入手的demo.

某天无意中看了一篇爱奇艺mac应用自动化帖子(原帖地址找不到了),提到了ATOMac框架,打算尝试使用下.

ATOMac简介

ATOMacc是一个支持在mac上做自动化的python库,GitHub地址如下:

代码语言:javascript
复制
https://github.com/pyatom/pyatom

从介绍上来看是一个python类库,可以操作mac os系统

安装

Python3

代码语言:javascript
复制
pip3 install git+https://github.com/pyatom/pyatom/

查看bundle id

因为在mac系统上操作每一个应用,都需要bundle id,类似iOS自动化的bundle id.

需要如下几步,查找某个应用的bundle id,以QQ应用为例

在“应用程序”中找到QQ

右键点击“显示包内容”

打开“info.plist”

找到“CFBundleIdentifier”

设置权限

在“安全性与隐私”中辅助功能勾选“iterm和pycharm”

启动应用

代码语言:javascript
复制
bundle_id = 'com.tencent.qq'
atomac.launchAppByBundleId(bundle_id)

获取应用信息

代码语言:javascript
复制
ato = atomac.getAppRefByBundleId(bundle_id)
print(ato)

查找元素

定位元素工具

需要安装xcode工具,并且打开“Accessibility Inspector”

选择mac上的进程“qq”

选择“Inspector”按钮查询元素

元素属性对应说明

ATOMac库使用的元素属性均在其属性名(通过Accessibility Inspector查到)前面加AX,且首字母大写,如下所示

ATOMac

Accessibility Inspector

AXRole

Role

AXPosition

Position

AXRoleDescription

Type

AXValue

Value

获取当前windows

代码语言:javascript
复制
window = automator.windows()[0]

元素定位

代码语言:javascript
复制
#findFirstR,递归查找,返回第一个匹配的元素(当查找的元素Parent非标准窗口时使用)
dt = cur_win.findFirstR(AXRole='AXRadioButton', AXTitle='地图')

获取位置参数

代码语言:javascript
复制
dt_position = dt.AXPosition
dt_size = dt.AXSize

操作鼠标

代码语言:javascript
复制
dt.clickMouseButtonLeft(dt_position)

输入文本

代码语言:javascript
复制
s1.sendKeys('7983')

空格

代码语言:javascript
复制
s1.sendKeys([BACKSPACE])

回车

代码语言:javascript
复制
s1.sendKeys([RETURN])

登录Mac的qq脚本

这一段脚本很简单,跟使用atx差不多.其实很多自动化框架的api方法都大同小异.

代码语言:javascript
复制
def qq_login():

    atomac.launchAppByBundleId(bundle_id)
    ato = atomac.getAppRefByBundleId(bundle_id)
    sleep(5)

    cur_win = ato.windows()[0]

    dt_image = cur_win.findFirstR(AXRole='AXImage')
    attr = dt_image.getAttributes()

    dt_pwd = cur_win.findFirstR(AXRole='AXTextField',AXSubrole='AXSecureTextField')
    dt_pwd.sendKeys(pwd)

    dt_login = cur_win.findFirstR(AXRole='AXCheckBox')
    dt_login.sendKeys([RETURN])

    sleep(5)

    print('login success!')

结语

ATOMac比较使用测试mac上的应用,比如跨平台的electron应用.

ATOMac应该可以替代appium测试mac上的应用,appium在测试mac os系统在官方文档中资料有限.

ATOMac不需要启动服务,直接调用系统函数进行自动化,速度很快.

ATOMac也适用于写一些自动化运维小工具,比如自动化签到、自动化启动应用.

参考

官方文档

代码语言:javascript
复制
https://pypi.org/project/atomic/0.7.2/

ATOMac - 基于Python的Mac应用Ui自动化库

代码语言:javascript
复制
https://www.jianshu.com/p/a36cd892adc1
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试加 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • ATOMac简介
  • 安装
  • 查看bundle id
    • 在“应用程序”中找到QQ
      • 右键点击“显示包内容”
        • 打开“info.plist”
          • 找到“CFBundleIdentifier”
          • 设置权限
          • 启动应用
          • 获取应用信息
          • 查找元素
            • 定位元素工具
              • 元素属性对应说明
                • 获取当前windows
                  • 元素定位
                    • 获取位置参数
                      • 操作鼠标
                        • 输入文本
                          • 空格
                            • 回车
                            • 登录Mac的qq脚本
                            • 结语
                            • 参考
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档