Linux 运行 iOS Appium

一、背景

不想依赖mac运行 iOS Appium,可在Linux上通过usbmuxd+tidevice的组合开启 iOS  Appium 服务。

二、环境搭建

1、Appium安装:

1)搜索appium进行

docker search appium

 2)拉取appium 镜像

docker pull  appium/appium

3)启动容器

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

由于需要跟ios通讯,需要把usbmuxd协议 挂载到宿主机

4)进入容器

docker exec -it env_ios bash

在容器内安装 pip 和 tidevice

apt update

apt install python3-pip

pip3 install -U "tidevice[openssl]" 

安装过程如果报错Attributeerror: htmlparser object has no attribute unescape ( Solved )
解决方法如下:

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

 如果报错python cannot import name ‘sysconfig’ from ‘distutils’,  解决方法如下:

apt install python3.9-distutils  # python3.9替换成你自己的python版本

以上都解决后,就可以执行装tidevice的命令了

Appium 容器所在宿主机插上苹果手机,查看是否连接上

如果这里没有出来任何设备,有可能是宿主机本身就没有安装usbmuxd协议,直接在宿主机层面安装usbmuxd,然后重启linux,ps查看一下协议是否起来即可:

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

启动wdaproxy监听对应设备的wda端口

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

 其中 -u 后面接iPhone手机的 udid,可通过  tidevice list 查询; -B 后面接 bundle identifier, 可通过如下tidevice applist 查询:

在容器内启动Appium服务,这里只做调试用,固定一个4725端口

2、测试服务

 在另外的机器上打开 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
}

其中 Remote Host 为 Appium 容器宿主机 的IP, Remote Port 为 指定的Appium 的端口。 

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

å¨è¿éæå¥å¾çæè¿°

这里犯了2个坑:

1、两个PC 没有在同一个公司内网,导致appium inspector 连接失败

ping  10.33.###.## ( appium  容器所在宿主机ip),也ping不通。改了同一个wifi后就通了

2、没有启动相对应的APP,原因是自己错用了appium android 的字段 package, 改为 bundleId 即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值