Appium-ios真机基于WebDriverAgent封装而来,结合W3C web协议,封装多版本接口,开源框架支持iOS、android、win10、Hybrid等等多种平台和应用类型。
基础环境
工欲善其事,先利其器。
基础环境安装如下:
nodejs
node环境是appium运行的基础,直接使用Homebrew安装:
brew install node
libimobiledevice
appium iOS真机调试依赖一个重要的第三方开源包:libimobiledevice,它同iTools一样,都是可以替代iTunes,进行iOS设备管理的工具,使用Homebrew可以轻松获取并安装:
brew install libimobiledevice
ios-deploy
ios-deploy是一个使用命令行安装ios app到连接的设备的工具,原理是根据os x命令行工程调用系统底层函数,获取连接的设备、查询/安装/卸载app。类似的工具有Fruitstrap,ideviceinstaller、node-ios-device等. 可以使用npm直接安装:
npm install g ios-deploy
appium-doctor
appium-doctor是用来检测安装环境是否正常的,可以使用node安装:
npm install appium-doctor -g
检查 appium-doctor --ios or appium-doctor --android or appium-doctor ,分别用来检查ios,android自动化测试环境,或者全部测试环境。
其他依赖可以通过上述检查工具检查安装。
Appium安装
appium GUI的老版本已经在1.5.3以后很久没有更新了,同时更新了新版本的appium-desktop。在此不建议通过 npm install -g appium or npm install appium@x.x.x 安装固定版本(原因被墙及其不稳定即便是通过cnpm+淘宝源安装也不够稳定),建议直接通过appium-desktop安装,下载地址appium-desktop。
完成安装之后打开,加载一次wda。如图:
点击start server,再点击start inspector session,
填写关键配置:
"automationName": "XCUITest",
"bundleId": "com.XXX.XXX",
"udid": "XXXXXXXXXXXXXXXX"
"automationName": "XCUITest"新版的xcode切换到XCUITest所以一定要写这个。
点击start Session。此时开始通过inspector查看元素。
配置WebDriverAgent
如果需要真机运行必然需要进行wda的配置,此处紧接着上一步。(上一步通过真机查看元素,必然会导致失败,原因就是wda没有配置)。
通过终端进入目录:/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver/WebDriverAgent
(部分版本可能目录有调整需要根据自己的情况执行),执行./Scripts/bootstrap.sh
,更新最新的wda代码。
完成后,打开此文件夹中的WebDriverAgent.xcodeproj工程,进行bundleID及描述文件修改
如果不修改,需要增加配置 :
"xcodeOrgId": "<Team ID>",
"xcodeSigningId": "iPhone Developer"
或者增加.xcconfig文件,文件内容:
DEVELOPMENT_TEAM = <Team ID>
CODE_SIGN_IDENTITY = iPhone Developer
以及build Setting中的bundleId
-------------------------------------------分割线---------------------------------------------------------
xcode11更新了机制所以签名方式有变化
如上设置后需要清除 bundle id
然后在
WebDriverAgentRunner
的 info.plist
中的Bundle identifier
改成你的 bundle id
,即可。
可以通过shceme选择WebDriverAgentRunner,然后通过Product–Test来测试是否修改完成。
CI方式启动appium以及结束appium
可以通过在server端机器点击appium-desktop版本的图标进行监听localhost和4723端口进行启动appium,点击关闭按钮进行关闭。
如果通过CI方式这样启动以及推出过于繁琐,而且会存在进程在进行中,无法启动或者关闭的问题。
推荐通过:
node /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js
启动,或者node /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --port 4725
指定端口号的方式启动。
结束进程通过:ps aux |grep appium |grep -v grep |awk '{print $2}' |xargs kill -9
来杀进程,安全退出。
Demo
参见我的github:iOSPerformanceTestDemo