前言:博主不是测试开发方面的研发,因工作中接触到了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

https://testerhome.com/topics/9854

https://blog.csdn.net/u010698107/article/details/120396046