最近要从0开始将手机银行的App自动化,记录这个过程.
工具选型
首先否决掉录制脚本的方法.我觉得使用录制脚本的都是假自动化.当时回放方便,但是长远来看维护性太差,稍微改动下UI可能就要全部重新录制.那么只剩下一个选择:代码实现.
比较了几款主流App自动化框架后,最后决定选择Appium.
主要是因为Appium跨平台, ,基于WebDriver,可同时用于iOS和安卓.而且不需要重新编译App,可以用Python,Ruby,Java等多种语言实现.
目标
- 首先,不管什么架构,数据模型之类,简单粗暴地把转账的功能跑通再说.
- 提出公共模块,例如登录.
- 将数据和业务代码分离.
- 使用关键字驱动等重构.
第一天
- 下载ios源码,在本机试运行,成功.
- 发现每次模拟器启动都会出线四个欢迎页面, 在
AppDelegate.m
找到对应代码,屏蔽之 :) - 操作流程:
- 启动App,有几个选择框:是否允许使用当前位置,是否允许发送通知,是否允许使用网络
- 进入主界面,点击"我的账户"按钮
- 弹出登录框,输入手机,密码,登陆成功(这里需要用万能验证码)
- 点击"我的账户"
- 选择银行卡
- 点击"转账"
- 输入"转账金额",输入"收款人户名",输入"收款账号",点击"下一步"
- 点击"确认转账"
- 输入"取款密码"
- 点击"完成",回到主菜单界面.
问题记录
- 登录时,用户名可以直接
send_keys
输入,但是密码框这样输入无效.因为密码框控件是使用第三方的安全键盘,只能通过xpath
找到对应的键位一个一个点击. - 模拟器每次登录时会有输入验证码的要求,找到开发,对我的测试账号加入万能验证码.
- 真机运行报错:
[XCUITest] The 'idevice_id' program is not installed. If you are running a real device test it is necessary. Install with 'brew install libimobiledevice --HEAD'
按提示下载对应包就行了. - 真机运行继续报错:
[XCUITest] Error: Could not initialize ios-deploy make sure it is installed (npm install -g ios-deploy) and works on your system.
继续按提示下载.
网友评论