AirtestProject Airtest 重磅更新,对 iOS 的支持全面升级优化啦!
此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途
前言
AirtestProject 团队又来交作业啦,大家期盼已久的 iOS 更新终于来了!!!
本次更新不仅同步支持了 Appium 的 WebDriverAgent 工具,还新增了一系列接口处理 iOS 的弹窗这个老大难问题,另外更新之后,iOS 支持到最新版本,xcode 支持到 12.1 版本,更多更新详情,请同学们细细查看下文。
PS:本次 iOS 的更新内容仅支持 python3,请 python2 的同学安装个 python3 环境使用哦!
Airtest 功能更新
1.支持 Appium 的 WebDriverAgent 工具
对 iOS 驱动部分迭代,同步支持 Appium 的 WebDriverAgent工具
和 Airtest 底下的 iOS-Tagent工具
。
自此,同学们既可以使用 Appium 的 WebDriverAgent
工具来部署 iOS 真机,也可以使用我们 Airtest 底下的 iOS-Tagent
工具来部署 iOS 真机,非常灵活。
另外,对于低版本的 iOS(iOS11 以下),我们更建议使用我们的 iOS-Tagent
工具,高版本的使用 Appium 的 WebDriverAgent
工具。
关于如何安装 appium 的 WebDriverAgent
教程,我们推荐以下几篇教程:
- Appium 的 WebDriverAgent 工具 - 安装资料:https://testerhome.com/topics/7220
- Facebook 的 WebDriverAgent 工具 - 安装资料:https://testerhome.com/topics/10463
- Appium 的 WebDriverAgent 工具 - 疑难解决:https://github.com/appium/WebDriverAgent/issues
- Facebook 的 WebDriverAgent 工具 - 疑难解决:https://github.com/facebookarchive/WebDriverAgent/issues
如果同学们选择在 iOS 真机上安装 appium 的 WebDriverAgent
工具,按上述教程安装好以后,现在同样支持使用我们的 AirtestIDE 连接这台 iOS 设备:
或者使用代码连接:
auto_setup(__file__,devices=["iOS:///127.0.0.1:8100"])
2.keyevet 接口增加音量控制事件
支持使用 keyevent
接口对 iOS 设备的音量进行加减控制:
# 音量增加
keyevent("volumeUp")
# 音量减少
keyevent("volumeDown")
3.新增 app_state 接口返回包体状态
新增 app_state
接口,可用于返回指定包体的当前状态:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 返回浏览器应用的当前状态
ios.app_state("com.apple.mobilesafari")
4.新增 app_current 接口返回当前运行应用
新增 app_current
接口,可用于返回当前运行的应用 :
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 返回iOS设备当前运行的应用
ios.app_current()
5.新增加锁的相关接口
1)is_locked
判断设备当前是否上锁:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 判断当前iOS设备是否上锁
ios.is_locked()
2)unlock
解锁设备:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 解锁iOS设备
ios.unlock()
3)lock
给设备上锁:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 给iOS设备上锁
ios.lock()
6.新增弹窗的相关接口
1)alert_accept
一般来说,适用于拥有 2 个按钮的 iOS 弹窗,会点击弹窗右边的按钮:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 点击弹窗右边的按钮
ios.alert_accept()
2)alert_dismiss
同样适用于拥有 2 个按钮的 iOS 弹窗,会点击弹窗左边的按钮:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 点击弹窗左边的按钮
ios.alert_dismiss()
PS:对于拥有 2 个按钮的 iOS 弹窗来说,一般情况下,确认按钮都在右边,所以 alert_accept 会点击右边的按钮,取消一般在左边,所以 alert_dismiss 会点左边的按钮。这只是一个方便使用的接口,不一定适用于所有的情况,如果遇到点击情况不符合预期,可以改用下文中,按指定按钮名字来点击的接口(alert_click)。
3)alert.text
返回弹窗上面的描述文字:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 返回弹窗上面的描述文字
ios.driver.alert.text
4)alert_buttons
以列表形式返回弹窗的按钮文字:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 返回设备弹窗的按钮的文字
ios.alert_buttons()
5)alert_click
点击弹窗上的指定按钮:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 点击弹窗上面的指定按钮,可传入列表按顺序查找
ios.alert_click(['设置', '允许', '好'])
6)alert_exists
判断弹窗是否存在:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 判断设备当前是否有弹窗存在
ios.alert_exists()
7)alert_watch_and_click
监控弹窗出现并且点击指定按钮:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 默认情况下监控此类弹窗:["使用App时允许", "好", "稍后", "稍后提醒", "确定", "允许", "以后"]
with ios.alert_watch_and_click():
sleep(5)
# 监控指定弹窗出现并点击
with ios.alert_watch_and_click(["Cancel"]):
sleep(5)
# 设置监控的时间间隔为2.0s
with ios.alert_watch_and_click(interval=2.0):
sleep(5)
7.新增 device_info 接口返回设备信息
新增 device_info
接口,可返回设备信息:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 返回iOS的设备信息
ios.device_info()
8.新增 home_interface 接口返回是否是 home 页
新增 home_interface
接口,可返回当前界面是否为 home 界面:
from airtest.core.ios.ios import IOS, wda
ios = IOS("http://localhost:8100/")
# 判断iOS设备当前界面是否为home界面
ios.home_interface()
PS:以上新增的功能接口中,部分接口可能存在适用性问题
Airtest 的 bug 修复
1.修复部分设备获取方向异常的问题
2.修复部分设备启动应用和关闭应用失败的问题
3.修复 poco 位置识别异常的问题
4.修复部分设备横屏显示异常的问题
5.优化了同时有多个进程连接单个 ios 时的表现和连接稳定性,略微加快了点击和滑动操作的速度。另外部分设备(例如 ipad, 6P/7P/8P)的操作速度会比别的型号手机更慢,这些型号的设备在竖屏情况下使用体验会更好
poco 更新
1.兼容 Appium 的 WebDriverAgent
工具元素树
2.修复设备在主界面横屏状态下位置识别异常的问题
AirtestIDE 更新
1.适配 iOS 的更新,去除旋转逻辑
2.修复部分 iOS 的中文元素树标签的显示异常
3.修复了 Ipad 在四个方向上旋转的时候,点击位置、poco 框选位置错误的问题
iOS-Tagent 更新
1.恢复了部分元素树的标签值
2.修复了 iOS 版本在 11-13 之间的横屏截图被 WDA 强行压缩的异常
更多展望
本次更新完成后,同学们进行 iOS 自动化测试时,可自由使用 Airtest 底下的 iOS-Tagent
工具或者 Appium 的 WebDriverAgent
工具作为底层服务。
由于 Appium 的 WebDriverAgent
工具 是开源版本,可自由克隆并修改源码,非常方便同学们克隆下来修复一些已知的异常。
所以我们也很希望同学们把自测过后的一些优秀代码,提交至 GitHub 的 Appium 的 WebDriverAgent
工具仓库或者在我们的 Airtest 开发者交流 Q 群(654700783)留言讨论,将这部分贡献出去,让更多的人受益。
Airtest 官网:http://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b
官方答疑 Q 群:654700783
呀~这么认真都看到这里啦,帮忙点击左下角的爱心,给我点个赞支持一下把,灰常感谢~