1. 使用桌面版Appium(Appium-Desketop)
打开Appium
打开inspector
连接iOS设备到Mac(注意设备要用同一个WIFI并且不要使用其他代理)
获取 UDID
打开终端
idevice_id -l
获取设备名称
idevicename
配置设备信息(使用模拟器不需要UDID)
本次在模拟器中演示, 点击第二步start, 发现模拟器会运行起来, appium如下图
2. 定位UI元素
两种方式获取
第一种: 如上在Appium-Desktop的 inspector中获取, 这里不再做解释
第二种: 通过 macaca 的 App Inspctor来定位元素参考文献
1. 安装 macaca-li
npm install macaca-cli -g
cli是client的缩写
2. 检查macaca 环境
macaca doctor
3. 安装web测试插件
brew install ios-webkit-debug-proxy
只要打印出的结果都绿色的日志信息,就表示环境是好的
4. 安装app-inspector
npm install app-inspector -g
5. 使用方法:
通过下面命令启动检测web界面,然后就在Safari中自动打开了【http://本地IP:5678】进行检测
app-inspector -u YOUR-DEVICE-ID(设备id)(udid 可以使用命令 idevice_id -l 获取)
xcrun simctl list (获取设备id, [参考链接](https://macacajs.github.io/app-inspector/guide/get-device-id.html#ios))
完成以上操作后将在浏览器中自动打开, 类似如下:
目前使用第二种方式, 主要有以下优点:
- 直接刷新页面速度比 appium 快点
- 没有很大延迟, 刷新后点击图标一般都能找到元素(使用时遇到一个问题, web打开时手机界面底部没展示券, 通过键盘 commend和-号缩小页面, 展开了全部内容)
通过上面方法可以得到元素 xpath 和 name (或accessibility id), 然后对应到 Appium的命令如下:
driver.find_element_by_name(“name或accessibility id")
driver.find_element(By.NAME,“name或accessibility id")
xpath:
driver.find_element_by_xpath(“xpath地址")
driver.find_element(By.XPATH,“xpath地址”)
可能遇到问题: (网上说的)
遇到的问题:app-inspector我这用的模拟器,用真机的情况下一直报错。模拟器没问题
Error: connect ECONNREFUSED 127.0.0.1:8001
at Object.exports._errnoException (util.js:1024:11)
at exports._exceptionWithHostPort (util.js:1047:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1150:14)
解决方法:
cd /usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD
open XCTestWD.xcodeproj
修改XCTestWD和XCTestWDUITests,修改bundle id,签名然后编译通过即可。(参考webdriveragent的更改方法,操作一致)
最后附上 Pycharm 的 破解文档
Pycharm破解