美文网首页
推荐一款阿里最新 Python 自动化开源工具!

推荐一款阿里最新 Python 自动化开源工具!

作者: 测试开发技术 | 来源:发表于2021-07-06 13:46 被阅读0次

    如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过xcodebuild 编译&安装WDA (WebDriverAgent)iOS 设备中,通过WDA实现对被测应用进行操作。导致想要做iOS自动化 就必须拥有 Mac 设备的现象。

    作为一名测开新手,在学习完移动端自动化测试后,兴致满满要实践一番,无奈公司只配备了windows电脑,怎样进行iOS自动化测试成了一大难题,而今天给大家分享一款新面市不久的iOS自动化工具:tidevice,正好是弥补了这块空缺。

    一、tidevice介绍

    tidevice 是阿里内部小组前不久,刚开源的一款针对用来做iOS自动化测试用途的工具,可用于iOS应用的性能采集和UI自动化。不依赖Xcodebuild,可以运行在MacLinuxWindows 上,即使你没有Mac电脑,也能跑iOS自动化

    一句话概况:tidevice它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDriverAgent( WDA ),这也就意味着以后在Windows 可以直接运行 iOS 自动化脚本了。

    项目地址:

    https://github.com/alibaba/taobao-iphone-device
    

    二、tidevice能些什么?

    从上述的介绍中,可以知道tidevice定位就是一款iOS自动化测试工具,主要用途有:

    • iOS UI自动化测试
    • 设备信息获取
    • 应用安装、卸载、启动、停止、查看应用信息、已安装应用列表
    • 启动 WebDriverAgent (不依赖 xcodebuild , 跨平台)
    • 性能数据采集
    • 设备截图、设备日志等

    三、 tidevice自动化环境准备

    1.安装tidevice(依赖Python3.6+)

    pip3 install -U "tidevice[openssl]" (推荐)
    pip3 install -U tidevice (缺少设备配对功能)
    

    2.查看是否安装成功

    tidevice -v
    

    3.在设备上安装WebDriverAgent

    除了上述两步,要完成 iOS 端的自动化,我们还需要做一些准备工作

    • 3.1 . 下载WebDriverAgent,将 WebDriverAgent 安装到 iOS 设备上,通过它驱动手机进行一系列自动化操作,由于 Facebook WDA 很长时间没有更新了,这里建议直接使用 Appium WDA
    https://github.com/appium/WebDriverAgent
    
    • 3.2. 切换到WebDriverAgent目录下,执行./Scripts/bootstrap.sh

    • 3.3. 依赖安装完成后,双击WebDriverAgent目录下的WebDriverAgent.xcodeproj在Xcode中打开

    • 3.4. WebDriverAgent的Bundle Identifier更改为自己命名的Identifier

    • 3.5. WebDriverAgentLib的Bundle Identifier更改为自己命名的Identifier

    • 3.6. WebDriverAgentRunner的Bundle Identifier更改为自己命名的Identifier

    • 3.7. 连接手机,点击Bulid

    image
    • 3.8. 提示Build Succeeded表示成功,点击Product-->Test
    image
    • 3.9. 提示Succeeded后打开手机-通用-设备管理-点击信任即可。

    四、tidevice常用功能

    准备好上述环境后,将 iPhone 设备连接到电脑上,就可以使用 tidevice 提供的功能了

    1. 查看已连接设备列表

    tidevice list
    # json数据显示
    tidevice list --json
    

    由于tidevice 支持的所有cmd命令 都是在 tidevice.main 中定义实现,可以直接与自己的工程代码集成在一起。

    Python代码:

    from tidevice import Usbmux
    print(Usbmux().device_list())
    

    利用tidevice info可以查看设备信息,比如:设备序列号、系统版本、CPU、本机号码、时间戳、蓝牙地址、MAC 地址等信息

    2. 查看手机上安装的应用

    tidevice applist
    
    image

    Python代码:

    from tidevice import Device
    Instruments = Device("udid").connect_instruments()
    # 设备上全部App信息列表 包含 系统应用和插件,通过 Type 可以区分App
    apps = instruments.app_list() 
    # 只筛选用户安装的App列表
    user_app_list = [app for app in apps if app["Type"] == "User"] 
    

    3. 安装、卸载应用
    tidevice 支持安装本地 ipa 包和远程包,另外,tidevice 可以使用「 --udid 」参数将应用安装到某一台设备中

    # 安装本地应用
    tidevice install test.ipa
    
    # 根据udid参数,指定设备安装应用
    tidevice --udid $UDID install https://xxx.org/mikezhou.ipa
    
    # 卸载应用(通过包名)
    # 比如:微信App包名为:com.tencent.xin 
    tidevice uninstall com.tencent.xin 
    

    Python代码:

    from tidevice import Device
    Device("udid").app_install(ipa_url_or_path)
    

    4. 获取设备信息

    tidevice info
    

    Python代码:

    from tidevice import Device
    # 内容会比cmd 全很多, 但是需要理解每个字段的含义
    Device("udid").device_info()
    

    查看设备电源信息

    tidevice info --domain com.apple.mobile.battery --json
    

    可以执行 ideviceinfo -h查看都有哪些domain

    5. fps 数据采集

    tidevice dumpsfps
    
    

    四.执行自动化测试

    在执行iOS自动化测试之前,首先要提前将 WDA 安装到 iOS设备中 并在设置中信任开发者,确保WDA可以正常启动,并且知道bundleId

    1、启动WDA

    真机设备安装完 WDA 后,就可以脱离 Mac,使用 Windows 进行自动化操作了

    tidevice -u(设备 udid)wdaproxy -B(wda 的 bundleId) --port 8100
    # 只连接了一台手机,例如:
    tidevice wdaproxy -B com.facebook.WebDriverAgent1.xctrunner --port 8100
    

    当看到以下信息表示启动成功

    image

    此时可以访问http://127.0.0.1:8100/status

    [图片上传失败...(image-f1130a-1625463767310)]

    2.weditor安装查看元素工具

    # weditor安装
    pip3 install -U weditor
    # weditor启动
    控制台输入weditor或者python3 -m weditor
    

    3.查看元素

    • Windows: cmd-->ipconfig-->获取本机ip,系统选择iOS,输入http://本机ip:8100,点击Connect

    • Mac电脑:系统选择iOS, 输入http://localhost:8100,点击Connect

    [图片上传失败...(image-e2c3e8-1625463767310)]

    1. 接下来,就可以使用 Appium 或 facebook-wda 编写脚本并运行到 iOS 设备上了,首先,我们安装对应的依赖,比如安装facebook-wda依赖
    pip3 install -U facebook-wda
    

    接着,以酷狗App为例,编写自动化脚本并运行测试,代码如下:

    # -*- coding:utf-8 -*-
    import wda
    import allure
    
    d = wda.USBClient()
    
    class TestDemo:
        def setup(self):
            d.session('com.kugou.kugou1002')
    
        def test_loginDemo(self):
            with allure.step('点击我的'):
                d(label='我的').click_exists(10)
            with allure.step('点击登录'):
                d.xpath('//*[@label="空列表"]/Other[1]/Button[1]/StaticText[3]').click_exists(10)
            with allure.step('点击其他登录方式'):
                d(label="其他登录方式").click_exists(10)
            with allure.step('输入账号'):
                d.xpath('//*[@label="帐号"]/following-sibling::*[1]').get(10).set_text('17622222333')
            with allure.step('输入密码'):
                d.xpath('//*[@label="密码"]/following-sibling::*[1]').get(10).set_text('000000')
            with allure.step('点击登录'):
                d.xpath('//*[@label="密码"]/parent::*/parent::*/following-sibling::*[2]').click_exists(10)
            assert d(label="请先勾选页面下方的“同意《用户协议》和《隐私政策》”").wait(10) != None
    
        def teardown(self):
            d.app_stop('com.kugou.kugou1002')
    

    五. 最后

    阿里开源的tidevice这款工具,占用内存小,且支持跨平台,使iOS自动化摆脱了Mac的限制,也给iOS自动化方案建设更多的可能性,但由于刚开源不久,可能还存在一些不稳定的因素,但这并阻止不了大家尝鲜的脚步。

    相关文章

      网友评论

          本文标题:推荐一款阿里最新 Python 自动化开源工具!

          本文链接:https://www.haomeiwen.com/subject/lbrgultx.html