1.安装Xcode。
2.安装Homebrew,它是一个macOS上的软件包管理工具,便于下载软件包。
打开终端,运行:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3.安装Nodejs和npm:
brew install npm
运行node -v和npm -v确保安装成功。
4.安装cnpm。由于npm源在国外,使用npm安装库时会比较慢,可以使用taobao的镜像源:
npm install -g cnpm --registry=https://registry.npm.taobao.org
5.安装Appium依赖库libimobiledevice,如果没有安装会导致Appium无法连接到iOS的设备,所以必须要安装:
brew install libimobiledevice --HEAD
6.如果要在iOS10+的系统上使用Appium,需要安装ios-deploy:
npm install -g ios-deploy
7.对真机需要安装xcpretty:
gem install xcpretty
8./安装carthage:
brew install carthage
9.安装appium-doctor:
npm install appium-doctor -g
再进行环境检测:
appium-doctor --ios
有没装好的包就用brew install安装;直到appium-doctor --ios环境检测全部必装环境都配置好就可以安装Appium了:
10.安装Appium:
cnpm install -g appium
11.下载并编译webDriverAgent:
- 从github上下载代码:
(官方文档参考https://github.com/appium/WebDriverAgent)git clone https://github.com/facebook/WebDriverAgent
- 运行./Scripts/bootstrap.sh:该脚本会使用Carthage下载所有的依赖,使用npm打包响应的js文件。执行完成后,直接双击打开WebDriverAgent.xcodeproj这个文件准备编译WebDriverAgent,编译时要进行签名,要向ios开发人员要一个开发者账号(具体操作是ios开发人员帮忙操作的),接下来的配置参考:https://www.cnblogs.com/xiyuan2016/p/7593211.html。run这个项目的时候要注意在手机设置-通用-描述文件与设备管理中信任WebDriverAgentRunner
Appium设备端:
iOS 真机,手机上会多一个名为WebDriverAgentRunner 的应用,这个应用的作用就是对你的目标 App 进行测试。它能根据被测试应用的BundleID 将它唤起,然后自己进入死循环保证测试用例一直不退出。此时等待服务器传来 URL 数据,然后解析 URL,分发到对应模块,各个模块根据 URL 指令执行对应的测试操作,最终再把测试结果返回。
Appium 服务端:
是一个Node.js 应用,这个应用跑在电脑上,用于和 WDA 进行通信。采用的是WebDriver 协议。
Appium 客户端:
我们的代码。
PS:在Mac电脑上连接真机iPhone,运行WebDriverAgentRunner会在Mac端启动WDA服务器,并在手机iPhone端安装一个WebDriverAgentRunner应用。通过编写脚本来与WDA服务器通信,告诉WDA服务器想要如何操作iPhone,WDA服务器与安装在手机iPhone端的WebDriverAgentRunner应用通信并通过该app发送模拟指令来实现操作iPhone手机(https://www.cnblogs.com/LanTianYou/p/10205499.html)
WebDriverAgent安装一次就可以了。如果被删掉是因为没有在iOS设置-通用-描述文件与设备管理中点击信任。
https://github.com/google/ios-webkit-debug-proxy/blob/master/README.md
遇到的问题:
1.Not cleaning generated files. Add clearSystem Files
capability if wanted.
desiredCapabilities.setCapability('clearSystemFiles',' true');
2.Keyboard is not present
分机型自定义键盘
- 点击 tap(原来的tap方法 appium升级后不适用了)
self.driver.execute_script("mobile: tap", {"x": 22, "y": 579})
# self.driver.tap([(key_position_x['a'], key_position_y['a'])])
3.sleep大于5s时会断开连接,不知道为什么??????可能是selenium的问题
4. xpath ios 定位长达14秒?????
5.
有些控件是满足条件后才给显示,比如登录后可见,所以visible的默认值false,inspector一直会取此控件或者父控件的默认值?
visible为false导致click不可用 目前只能坐标缩放点击适配所有型号手机
都是因为h5页面获取不到,要找开发把手机udid配进配置文件里。。。