zoukankan      html  css  js  c++  java
  • Airtest重磅更新,对iOS的支持全面升级优化啦!

    前言

    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 教程,我们推荐以下几篇教程:

    如果同学们选择在iOS真机上安装appium的 WebDriverAgent 工具,按上述教程安装好以后,现在同样支持使用我们的AirtestIDE连接这台iOS设备:

    image

    或者使用代码连接:

    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强行压缩的异常

    image

    更多展望

    本次更新完成后,同学们进行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

    呀,这么认真都看到这里啦,帮忙点个推荐支持一下呗,灰常感谢~

  • 相关阅读:
    Day 29 作业/服务端实现接收客户端的连接并发
    Day 28 操作系统发展/进程
    Day 27 作业(FTP)
    Day 27 subprocess模块/粘包问题以及解决/UDP协议/socketserver
    Day 26 作业
    Day 26 互联网协议/Socket套接字
    Day 22 绑定方法和非绑定方法/isinstance/issubclass/反射/魔法方法/单例模式
    Day 21 作业
    Day 21 组合/封装/property特性/多态和多态性/抽象类/鸭子类型
    day 20 作业
  • 原文地址:https://www.cnblogs.com/AirtestProject/p/14389640.html
Copyright © 2011-2022 走看看