iOS - 自动化测试 WDA 安装 & 使用
前言:博主不是测试开发方面的研发,因工作中接触到了iOS自动化测试的需求,故而自己摸索了一下iOS的自动化测试 WDA ,摸索的过程遇到了很多坑,深知装这个环境以及run起来的不容易,故而记录一下这个过程,帮助自己以后复习以及新人入门,有什么不对的地方欢迎大佬指正
1. 下载 tidevice(如果下载成功,输入tidevice的命令 却提示不存在,可能需要卸载tidevice,然后 在下面的命令前面带上 sudo)
pip3 install -U tidevice
2. clone wda
git clone https://github.com/appium/WebDriverAgent
3. 点击 WebDriverAgent.xcodeproj
4. 修改team 以及 bundleId(team 用个人的或者开发者的都可以)
5. 选择运行项目以及自己的设备
6. 运行方式:product -> test
7.运行之后,控制台下面这种输出,证明成功了
8.在命令行中执行 tidevice relay 8100 8100 将手机的端口转到mac上来(注意⚠️,输入完会进入一个状态中,不要退出来,可以再打开新的命令行输入别的命令),然后就可以在mac的浏览器中输入 http://localhost:8100/status,看到如下界面,证明电脑和手机建立起了连接
扩展:有人可能会问,那自动化脚本怎么写呢?接下来说一下自动化脚本怎么去写
1、在上面的环境都ready了之后,需要安装一下 weditor,查看UI元素(如果下载成功,输入weditor的命令 却提示不存在,可能需要卸载weditor,然后 在下面的命令前面带上 sudo)
pip3 install -U weditor
2、安装完,输入 weditor 就会自动打开页面了
到此,我们已经可以看到手机的 UI元素图了,下面继续将脚本怎么写
3、首先安装pytest (如果下载成功,输入pytest的命令 却提示不存在,可能需要卸载pytest,然后 在下面的命令前面带上 sudo)
pip3 install -U pytest
4、安装完,自己创建一个 xxx.py的脚本,然后把自动化测试的代码放进去,执行 pytest xxx.py即可,我把自己测试网易云自动播放音乐的脚本放这,有需要的朋友可以参考一下
# 网易云自动化测试 import os import time import wda import pytest from pytest import mark bundle_id = 'com.netease.cloudmusic' c = wda.Client() s = None def create_session(): s = c.session(bundle_id) # s.set_alert_callback(alert_callback) return s def setup_function(): global s s = create_session() # account_netease_login(s) def teardown_function(): s.close() def test_discover_music(): """ 测试 发现音乐 -> 每日推荐 中的播放功能 """ # s(name=u'发现', type='Button').tap() # time.sleep(.5) # assert s(name=u'听歌识曲', visible=True).wait() s(name=u'10 每日推荐').tap() # assert s(name=u'不再播放').exists # assert s(name=u'添加到我喜欢的音乐').exists # assert s(name=u'00:00', className='StaticText').exists # s(nameMatches=u'(暂停|播放)').tap() # assert s(name=u'00:00', className='StaticText').wait_gone(10.0) time.sleep(.10) s(name=u'播放全部').tap() # time.sleep(.100) # s(name=u'返回', type='Button').tap() # 等待元素消失后继续执行 超时时间1000s 在这的作用为了不让 脚本结束 一直播放音乐 s(name=u'返回', type='Button').wait_gone(1000) # s(name=u'知道了').click_exists(2.0)
一切成功之后,日后再启用自动化测试,可以直接用这些命令
1. 打开终端,运行 tidevice -u $UDID xctest -B $BUNDLE_ID 。$UDID为ios手机设备ID(可用tidevice list获取),$BUNDLE_ID为WebDriverAgentRunne的bundleid(可用tidevice applist获取)
运行成功之后 不要关掉终端,可再开启一个终端输入新的命令
2. tidevice relay 8100 8100 同样成功之后 不要退出终端,打开新的终端执行命令
3. weditor 同样成功之后 不要退出终端,打开新的终端执行命令
4. 执行脚本
结语:下面是自己摸索过程中看过的文章,里面的内容可以参考一下,不一定适合所有读者,包括我自己的这篇文章,可能也不完全适应所有读者,遇到实际问题还是需要自己去google,因为每个人的环境都不同,谁也不知道自己会遇到什么样的问题,遇到问题也不要太容易放弃了,博主不是测试开发方面的研发,可以说基本是这块的小白,搭建这些东西花了一天多的时间,相信自己,一定能解决所有问题,加油!
https://cloud.tencent.com/developer/article/1864001
https://github.com/facebookarchive/WebDriverAgent
https://github.com/facebookarchive/WebDriverAgent/wiki/Queries
https://github.com/openatx/facebook-wda