iOS+appium自动化测试环境搭建

16 篇文章 1 订阅
6 篇文章 1 订阅

备注: wendriveragent作为appium和ios设备的中间通信的桥梁,安装实现有很多细节问题,会踩一些坑

 

安装环境目录(亲测可以运行成功):

1.xcode安装(建议mac系统在10.12以上,xcode在8.1以上,避免低版本影响)

2.开发者证书(可以使用免费)

3.homebrew安装(用brew来安装依赖)

4.git安装

5.npm和nodejs、cnpm安装(appium需要node环境,用cnpm或者npm来安装依赖)

6.libimobiledevice的安装(这是类似安卓的adb的工具,连接设备)

7.ios-deploy安装(ios10以上需要安装来连接设备)

8.idevicesinstaller安装(iOS9一下的的类似安卓adb的工具,安装、卸载)

9.Carthage安装 (类似maven一样管理依赖,WebdriverAgent编译需要安装依赖)

10.appium-命令行或者桌面版安装

11.appium-doctor安装(用于检查appium的相关环境是否配置成功)

12.java+sdk安装,并配置环境变量

13.webdriveragent安装(安装一个webdriveragentrunner来通信驱动iOS设备)

14.启动appium

15.安装ios-webkit-debug-proxy (iOS的H5测试)

 

 

1.xcode安装(建议mac系统在10.12以上,xcode在8.1以上,避免版本影响)

 

2.开发者证书(可以使用免费)--具体申请,百度搜索

http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/2_device_connection/4_ios_connection.html

 

3.homebrew安装(用brew来安装依赖)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew update可以使用这更新

4.git安装

brew install git

 

5.npm和nodejs、cnpm安装(appium需要node环境,用cnpm或者npm来安装依赖)

brew install node

sudo npm install -g cnpm --registry=https://registry.npm.taobao.org 安装cnpm

检查是否安装成功

node -v

npm -v

cnpm -v

 

6.libimobiledevice的安装(这是类似安卓的adb的工具,连接设备)

brew install --HEAD libimobiledevice (安装build失败 Xcode版本太老了,最好升级到xcode10.1)

1、打印app列表 ideviceinstaller -l

2、查看当前已连接的设备的UUID idevice_id -l

3、获取设备信息 ideviceinfo

4、获取设备时间 idevicedate

5、重启设备 idevicediagnostics restart

6、安装ipa包,卸载应用 ideviceinstaller -i xxx.ipa

//命令安装一个ipa文件到手机上,如果是企业签名的,非越狱机器也可以直接安装了。

ideviceinstaller -U [bundleID]

//命令卸载应用,需要知道此应用的bundleID

        8、截图 idevicescreenshot

 

7.ios-deploy安装(ios10以上需要安装来连接设备)

cnpm install -g ios-deploy

2. ios-deploy常用命令

2.1 查看连接的设备(包括通过usb和wifi连接的)

ios-deploy -c

2.2 查看通过usb连接的设备

ios-deploy -c --no-wifi

2.3 安装应用到指定设备(其中xxx.app是Xcode编译后的ipa的路径)

ios-deploy --id [udid] --bundle [xxx.app]

2.4 卸载指定设备上的应用(根据包名,也就是bundleId)

ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId]

2.5 查看指定设备上安装的所有应用(包括系统应用和第三方)

ios-deploy --id [udid] --list_bundle_id

如 ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --list_bundle_id

2.6 检查指定设备上是否安装了某个应用

ios-deploy --id [udid] --exists --bundle_id

如 ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --exists --bundle_id com.facebook.wda.integrationApp.taozhen

 

8.idevicesinstaller安装(iOS9一下的的类似安卓adb的工具,安装、卸载)

brew install ideviceinstaller

 

9.Carthage安装 (类似maven一样管理依赖)

brew install carthage

检查命令

carthage version

 

10.appium-命令行或者桌面版安装

http://appium.io/ 官网下载

开启打开这个链接 http://127.0.0.1:4723

 

11.appium-doctor安装(用于检查appium的相关环境是否配置成功)

sudo npm install appium-doctor -g 或者

sudo cnpm install -g appium-doctor

安装的地址存放:

link /usr/local/bin/appium-doctor@ -> /usr/local/lib/node_modules/appium-doctor/appium-doctor.js

检查 命令

appium-doctor

appium-doctor --ios

appium-doctor --android

 

12.java+sdk安装,并配置环境变量

百度下载安装jdk和sdk

 

13.webdriveragent安装(安装一个webdriveragentrunner来通信驱动iOS设备)

第一步:git clone https://github.com/facebook/WebDriverAgent.git

第二步:brew install Carthage

mkdir -p Resources/WebDriverAgent.bundle # 不知道为啥要加这步,先加着

第三步:./Scripts/bootstrap.sh

webdriveragent编译构建

WebDriverAgentLib、WebDriverAgentRunner、products下的integrationApp这三个都要设置开发者证书,并且bundleid修改

编译成功后,会在手机上有一个webdriveragent的一个app信任就可以使用了

安装编译好后,需要把appium 下的webdriveragent项目替换

路径 /Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver

注意:

下载的appium桌面版本自带的webdriveragent路径在这个路径下

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

也可以直接用appium自带的webdriveragent(不用./Scripts/bootstrap.sh,直接WebDriverAgentLib、WebDriverAgentRunner、products下的integrationApp这三个都要设置开发者证书,并且bundleid修改)

参考:

https://www.jianshu.com/p/81899f2b64b0

https://www.jianshu.com/p/bf1ca3d4ac76

https://www.jianshu.com/p/568e1f4b152a

编译WebdriverAgentRunner ----> 这时候控制台就会打印出手机的ip和端口

⇒ ios10以下版本可以直接用浏览器访问 ip+status/查看状态:

例如:http://10.0.0.1:8100/status

⇒ ios10以上版本需要通过mac转发一下再去访问

proxy 8300 8100   #开启iproxy 进行端口转发

浏览器中输入:http://localhost:8300 ,出现遗传json字符串即可。

iproxy 8100 8100

http://localhost:8100/status

http://localhost:8100/inspector

测试的时候,手机不链接wifi的话,直接就可以打开ip:端口 ,不用转发

证书冲突的话,将BuildSettings里的code singing identity设置成iPhone Develpoer,解决

 

 

14.启动appium

desired_capabilities={

# 'app': app,

'platformName': 'iOS',

'platformVersion': '11.4.1',

'deviceName': '陶振的iphone', # 陶振的iphone

'bundleId': 'com.facebook.wda.integrationApp.taozhen', # com.renren-inc.nuomi com.facebook.wda.integrationApp.taozhen

'udid': '0420781d4e43f1f99935513c91e9b816f4dddc24',

'automationName': 'XCUITest',

"xcodeOrgId": "10位开发者账号teamid", # 10位开发者账号teamid #

"xcodeSigningId": "iPhone Developer"

}

xcodeOrgId(teamId)获取 security find-identity -v -p codesigning

xcodeOrgId(teamId) 在安装webdriveragent的时候可以看到

https://www.jianshu.com/p/b5bc45362fa0

 

 

15.安装ios-webkit-debug-proxy (iOS的H5测试)

在做iOS的h5页面的时候,肯定会需要去做webview调试来进行代码调试,而iOS webview调试需要区分真机和模拟器,因为具体的实现原理不一样的,模拟器使用 remote debugger,可以直接通过safari远程调试,而真机使用 ios-webkit-debugger-proxy去远程调试的。

注意,测试包必须要使用develop证书打包,才可以进行真机调试。

通过如下命令进行安装

brew install ios-webkit-debug-proxy

安装之后运行如下命令查看是否能够调起ios-webkit-debug-proxy

ios_webkit_debug_proxy -c XXXXXXXXXX:27753 -d XXXXXXXXXX表示设备UDID

运行上述命令发现报错如下:

Could not connect to lockdownd. Exiting.: Permission denied

通过查找资料,发现网上大部分的解决方案是执行如下命令:

sudo chmod -R 777 /var/db/lockdown/

appium如何启动ios-webkit-debug-proxy

发现ios-webkit-debug-proxy可以通过设置DesiredCapabilities来调起,代码如下:

cap.setCapability(“startIWDP”,true);

 

遇到问题:

1. appium-doctor 检查异常

appium-doctor

/usr/local/lib/node_modules/appium-doctor/build/lib/general.js:59

} catch {

SyntaxError: Unexpected token {

检查对应general代码,看代码意思是node版本不能低于10

升级node

brew upgrade node

如果更新brew卡住,更换brew源

替换brew.git:

cd "$(brew --repo)"

git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

给 /usr/local赋予修改权限

sudo chown -R $(whoami) /usr/local

brew link --overwrite node 重写link

brew link node 链接link

node地址

/usr/local/Cellar/node/13.7.0

编译项目

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=3825bba08e5c10c499ddaf0276bac01983ab7119' test

 

http://localhost:8100/status

http://localhost:8100/inspector

问题1:

webdriveragent运行test,出的log里的链接不成功 访问不到的话,尝试用 iproxy 8100 8100 (转发之后http://127.0.0.1:8100/status 这个链接可以打开) 但是运行appium会提示8100端口号被占用

webdriveragent使用iproxy 8100 8100代理后,启动appium,提示端口8100被占用

An unknown server-side error occurred while processing the command. Original error: The port #8100 is occupied by an other process. You can either quit that process or select another free port.

⇒ ios10以下版本可以直接用浏览器访问 ip+status/查看状态:

例如:http://10.0.0.1:8100/status

⇒ ios10以上版本需要通过mac转发一下再去访问

http://127.0.0.1:8100/status如果打开没有json,启动appium就会有这个失败,但是使用了ipoxy 8100 8100后,使用appium又会提示8100端口号被占用???天呐

答:不要用wifi,直接用4G ,就不用转发

问题2

Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65 xcodebuild error message

出现这个问题的时候,一般是webdriveragentRunner test失败后了,强行起appium服务就会有这个错误,同问题3

这个是链接json都没还通 ,肯定起不来

问题3:

WebDriverAgentRunner.xctest/WebDriverAgentRunner (0x102390530). One of the two will be used. Which one is undefined.

这个问题,就重新链接xcode、手机插拔,重新编译webdriveragent一遍就好了,没有特别操作,不知道为啥发生

断掉wifi,不然算链接了两个手机 ios-deploy -c

问题4:

webdriveragentrunner 构建成功,但是test 失败

https://testerhome.com/topics/16950

问题5:

对于一个未知问题的说明:

在使用Appium的过程中我们会遇到一些未知问题,通过网络查找可能会需要补充以下两对Desired Capabiities:

{ "xcodeOrgId": "<Team ID>", "xcodeSigningId": "iPhone Developer" }

caps["app"] = "http://appium.s3.amazonaws.com/TestApp7.1.app.zip"

开发者账号的teamid如何查看

security find-identity -v -p codesigning

问题6:

Original error: 'bundleId' desired capability not provided

答:原因是appium自带的webdriveragent没有正确替换,网上教程说的appium自带的路径在

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/

其实我下载的appium桌面版本V1.15.1版本自带的webdriveragent路径在这个路径下

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

直接替换或者直接用appium自带的webdriveragent就可以了

https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值