linux 不依赖xcode成功运行appium+ios自动化
创始人
2024-01-29 06:59:33
0

一、原理

**1、【常规】**常规情况下,ios自动化需要mac机器,如果强行使用linux运行,过程会提示Xcodebuild Failure,也就是强依赖Xcode。
失败图如下:
在这里插入图片描述
**2、【思路】**那有没有什么方法可以绕过xcode的限制呢,还是有的。usbmuxd+tidevice
首先得介绍一下阿里开源的工具tidevice:tidevice官方链接,
能力通俗说就是:该工具能够用于与iOS设备进行通信。能力大致介绍:
在这里插入图片描述
介绍中有写到,能模拟Xcode运行XCTest,好了,就是使用使用该能力来进行appium控制ios模拟通信。
usbmuxd协议,能力大致可以理解为:USB协议上实现多路TCP连接,将USB通信抽象为TCP通信媒介。

二、实战

1、【appium安装】:
1.1、由于appium自己安装依赖过多,需要用到npm、node等依赖,具体见:安装appium服务
1.2、由1.1分析可知,直接看一下docker有没有现成的镜像可用,直接拉下来使用是最方便的方式,先docker search appium一下,发现官方源,好了圈出来的就是我们的使用源。
在这里插入图片描述
1.3、docker拉下来

docker pull appium/appium

在这里插入图片描述
在这里插入图片描述
执行以上命令后,过一会去查看镜像,发现已经拉取成功

**2、【容器化appium镜像】**由于需要跟ios通讯,故需要把ios挂载进去,需要用到usbmuxd协议。

sudo docker run -it --name env_ios_02 -d -v /var/run/usbmuxd:/var/run/usbmuxd -e TZ="Asia/Shanghai" --network host --privileged appium/appium

3、【安装python3.9】
3.1、【进入容器分析】进入上面启动的env_ios容器

 sudo docker exec -it env_ios_02 bash

进入容器后,可以发现,官方appium源是基于ubuntu18.04LTS版本搭建的,默认python版本为3.6.9
在这里插入图片描述
如果正常使用python3.6.9去安装tidevice,过程会发现一堆乱七八糟的问题,大致为:
a、python cannot import name ‘sysconfig’ from ‘distutils’
b、AttributeError: ‘HTMLParser’ object has no attribute ‘unescape’
等等,用起来超级麻烦,所以需要升级到3.9,笔者用的是Python 3.9.15

3.2、【卸载python3.6及安装python3.9

具体参考:ubuntu18.04下安装python3.9.2
以上操作完,发现python3出来的还是python3.6.9这是咋回事呢,原来系统只是装了python3.9,但是默认的python3还是python3.6.9,并不会覆盖。
将python3的原来的软连接删除后,再通过python3.9映射一个新的软连接到python3即可解决,
软链接使用方法:ln -s 原文件名 链接文件名
思路:先找到原来的软链接路径,然后建立映射

root@iottest-CR160:~# ln -s /usr/bin/python3.9 /usr/bin/python3 

在这里插入图片描述

可以发现,已经链接成功了
在这里插入图片描述
3.3、【安装tidevice】

pip3 install -U "tidevice[openssl]"   # Recommend

安装过程如果报错Attributeerror: htmlparser object has no attribute unescape ( Solved ),可以参考:
Attributeerror: htmlparser object has no attribute unescape ( Solved )解决方案
直接使用方案2即可解决:

pip3 install --upgrade setuptools 
pip3 install --upgrade 
pip pip3 install --upgrade distlib

如果报错python cannot import name ‘sysconfig’ from ‘distutils’:参考
python cannot import name ‘sysconfig’ from 'distutils’解决方案
装包的过程发现速度好慢,咋整,换个匹配ubuntu18.04LTS国内源即可,参考:
ubuntu21.04 apt镜像源 pip镜像源
清华镜像源
以上都解决后,就可以执行装tidevice的命令了。
安装成功后,自己熟悉一下tidevice的用法,见tidevice官方链接,
在这里插入图片描述
插上苹果手机,查看是否连接上

tidevice list

在这里插入图片描述
如果这里没有出来任何设备,有可能是宿主机本身就没有安装usbmuxd协议,直接在宿主机层面安装usbmuxd,然后重启linux,ps查看一下协议是否起来即可,过程参考命令

ps -ef | grep usbmuxd
sudo apt install usbmuxd
sudo reboot

4、【启动wdaproxy监听对应设备的wda端口】

tidevice -u 00008020-### wdaproxy -B com.###.WebDriverAgentRunner.###.xctrunner.xctrunner --port 8100

单机情况,可以不用指定设备,指定特定设备时则使用-u参数,参考:

tidevice -u 00008020-## wdaproxy ...

在这里插入图片描述
然后启动appium服务,这里只做调试用,固定一个4725端口
在这里插入图片描述
然后使用Appium Inspector测试:
配置参考:

{"appium:deviceName": "iPhone 11","platformName": "iOS","appium:udid": "00008020-##","appium:bundleId": "com.###","appium:platformVersion": "15.2","appium:webDriverAgentUrl": "http://10.33.##.##:8100","appium:noReset": false,"appium:usePrebuiltWDA": false,"appium:useXctestrunFile": false,"appium:skipLogCapture": true
}

可以发现,投屏连接成功:

在这里插入图片描述
python代码测试参考以上即可实现。

5、【多机同时运行思路】启动多个appium端口、多个proxy映射,然后匹配连接即可。
5.1、针对每个设备指定转发proxy即可;注意,设备序列号和端口要对应,不能重复!

tidevice -u 00008020-## wdaproxy -B com.###.WebDriverAgentRunner.###.xctrunner.xctrunner --port 8100
tidevice -u 00008030-## wdaproxy -B com.###.WebDriverAgentRunner.###.xctrunner.xctrunner --port 8102

5.2、针对每个设备指定启动不同appium端口

appium -p 4725
appium -p 4727

6、【代码接口提供】
6.1、python可以借助django、flask、websocket等将以上过程封装即可。略
6.2、以上运行的容器,可以打包成新的镜像上传harbor(相当于docker镜像库缓存)即可开箱即用。

相关内容

热门资讯

2018小本创业怎么选项目呢 ... 1.优秀的、远大理想的、有匪气的创始人。这是基点,否则其他都是零。创业失败大多情况下不是商业模式不够...
2018小本创业项目排行榜 2... 2018年有前景的创业项目第二名代理快递随着互联网经济的发展,中国的地域广博,光是县级城市就有好几千...
小本创业生意2020好项目 小... 小本是指没有足够的资金投资创业的人通过有限或微弱的资金来达成创业的行为。小本并非不可创业,因为资金少...
投资5万能开什么店 现在开什么... 今年生意不好做,能稳妥赚钱的生意途径还真不多。所以说,当前在生意项目的选择上要非常慎重,搞不好就会鸡...
没钱没经验该如何创业?这5个小... 这个世界上没有谁是应该一辈子贫穷的,你可以穷一时,却不会穷一世。创业就是一个让你摆脱贫穷,翻身成为有...
最适合年轻人的15个小本创业项... 网上开店IT行业现在不少学生创业从电子商务起步,好处是成本低---网上开店是免费的;门槛低---稍有...
淘宝网开店淘宝网开店的小本创业... 新店新手最好做虚拟的(最基本的投资只有300元)因为实物的要找货源进货,卖不出货就造成压货,投资有风...
县城小本创业项目做什么 县城小... 随着经济社会不断向前发展,互联网技术也得到了迅速提升,技术创新为互联网革新带来了契机,创业活动尤其是...
适合穷人的小我想创业有小本创业... 很多人都会觉得创业是富人该想该做的事情,穷人是没有条件和机会创业的,可是事实上现在创业不是光靠资本就...
09年小本创业好项目 09年小... 最佳答案cbu-的答复:尽量减少投入太多资金,以回本快为第一原则,金融危机下尽量选择和百姓的生活相关...