第一次 mac 上安装 appium 做一下笔记,记录下操作的步骤和遇到的问题及解决方法,网上大把的教程,这里也是参考各位大神进行整理的笔记,如记录有误,也请多多指教!
要用到的软件
个人感觉 Mac 系统中安装 appium 稍微比win较麻烦一点
nodejs
JAVA jdk
android sdk
appium
Python # 个人使用python3
pycharm
安装 node.js
下载地址:https://nodejs.org/zh-cn/
直接双击下一步进行安装,安装完成后命令行输入命令查看安装是否成功
# 查看node安装是否成功
node -v
# 查看npm安装是否成功
npm -v
安装cnpm
npm有时会因网络问题下载报错,所以用淘宝的 cnpm 替代,本人在使用中安装软件有时会报错,不一定能正常使用;安装:依然先使用 npm 进行安装 cnpm,命令行命令如下:
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 查看cnpm版本号,是否安装成功
cnpm -v
配置java jdk环境变量 、 android sdk环境变量
JAVA 环境
官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载 Java 的 dmg包一路下一步默认路径安装,java安装路径一般在:
/Library/Java
配置环境变量,在家目录下的一个隐藏文件 .bash_profile,无该文件时自行创建
# 打开编辑变量文件
sudo vi ~.bash_profile
输入如下格式java变量,路径填写个人实际路径
export JAVA_HOME='/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home'
export CLASS_PATH=.:$JAVA_HOME/lib
export PATH=${PATH}:$JAVA_HOME/bin
设置完成后需执行该文件以生效
source ~/.bash_profile
配置完成后,命令行输入 java -version 查看版本以检测配置是否成功
Mac-mini:~ Mac$ java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
android sdk 环境变量
下载站点:https://www.androiddevtools.cn/#
将压缩包解压到自己的目录下,打开编辑变量文件,添加环境变量
sudo vi ~.bash_profile
添加进安卓sdk的变量,文件实际路径查看自己解压的目录,第四行根据自己实际版本填写
export ANDROID_HOME=/Users/gametest/Library/Android/sdk
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=${PATH}:${ANDROID_HOME}/build-tools/28.0.1
设置完成后需执行该文件以生效
source ~/.bash_profile
执行后输入 adb 检测是否成功
Mac-mini:~ NiHao$ adb
Android Debug Bridge version 1.0.41
Version 29.0.1-5644136
Installed as /Library/android-sdk-macosx/platform-tools/adb
global options:
-a listen on all network interfaces, not just localhost
-d use USB device (error if multiple devices connected)
-e use TCP/IP device (error if multiple TCP/IP devices available)
-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
-t ID use device with given transport id
-H name of adb server host [default=localhost]
-P port of adb server [default=5037]
-L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]
general commands:
devices [-l] list connected devices (-l for long output)
help show this help message
version show version num
、、、 、、、
、、、 、、、
配置python环境
安装python3(系统一般自带python2.7,需python3.x 的需自行下载安装)
下载站点:https://www.python.org/, 下一步安装,python一般会自动配置环境变量,在命令行输入python3 查看是否成功
Mac-mini:~ NiHao$ python3
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
配置 python 依赖的包
# 命令行输入
sudo pip install Appium-Python-Client
安装 brew 和 carthage
brew 为 mac的一个包管理工具,类似 python 的 pip
brew 安装要用到 ruby 命令
ruby -e "$(curl --insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew -v 查看安装是否成功
Mac-mini:~ NiHao$ brew -v
Homebrew 2.1.6
Homebrew/homebrew-core (git revision a443; last commit 2019-06-19)
附卸载 brew 的指令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
安装 carthage,为防止有时 appium 启动报错
brew install carthage
安装appium
有命令行和GUI包两种安装,建议下载dmg安装包手动安装
1.官网下载dmg包直接双击下一步安装(推荐),地址:http://appium.io/
2.cnpm安装(无图形界面,也可npm安装)
cnpm install -g appium
命令行安装的,要启动时在命令行直接输入 appium
安装appium-doctor
1、可以 cnpm 安装,但测试输入 appium-doctor 时报错,我用的时第二条成功
cnpm install appium-doctor
2、直接使用 npm 安装,测试可成功运行
sudo npm install -g appium-doctor
查看版本看暗转是否成功
appium-doctor --version
确定所有依赖是否安装成功,可通过命令行输入 appium-doctor 测试 appium 所需环境是否完整
绿色对勾为正常,有红色 x 需要重新调整
appium-doctor
至此,出现如图绿色对勾,表明环境搭建已基本完成
该命令可直接查看连接 iOS 设备所需依赖是否完整
appium-doctor --ios
安装Xcode、pycharm
Xcode 必须要装,pycharm 根据个人需要
=====可能出现的错误以及解决方法=====
报错:
appium-doctor 检测appium环境 如果 Xcode 报错时
WARN AppiumDoctor ✖ Xcode is NOT installed!
在已安装 Xcode 的情况下,检测未安装
原因:Xcode的安装路径和appium所检测的路径不同
解决办法:修改当前Xcode的安装路径,输入如下命令:
首先查看自己Xcode安装路径
xcode-select -p
# 查询安装路径结果如下:
/Library/Developer/CommandLineTools
将Xcode的安装路径改为:/Applications/Xcode.app/Contents/Developer
命令如下
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
再次输入 appium-doctor 检测
报错解除!
又一个报错!
WARN AppiumDoctor ✖ opencv4nodejs cannot be found.
解决方法:看别人大佬的
http://www.mamicode.com/info-detail-2633199.html
安装连接真机所需的依赖
连接真机需要安装依赖包 libimobiledevice、ios-deploy,使用 brew 工具安装所需依赖
# 安装 libimobiledevice(真机测试需要)
brew install libimobiledevice
# 安装 ios-deploy(真机测试需要)
brew install ios-deploy
Mac 连接 iOS 真机
1、连接真机手机端需安装 WebDriverAgent,需要用 Xcode 构建工程并安装到手机,WebDriverAgent 已在appium的安装目录下,进入如下目录,或查看自己实际安装的目录
cd /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
2、在当前目录下执行脚本,安装过程中有时会因 npm 问题报错,可尝试重新执行
sh ./Scripts/bootstrap.sh
3、完成后在该目录下找到如图目录,双击该目录会默认使用Xcode打开
学习几位老哥:
https://www.cnblogs.com/meitian/p/7360097.html
https://www.cnblogs.com/meitian/p/7359787.html
https://www.jianshu.com/p/5a7763973132
手机端安装好 WebDriverAgent 就可以愉快的连接 iOS手机进行操作了 (iOS 版本太新 Appium 可能会不支持)
启动下 Safari 浏览器
from appium import webdriver
cap = {
"automationName": "XCUITest",
"platformName": "ios",
"platformVersion": "12.2",
"deviceName": "iPhone 6",
"browserName": "Safari",
"udid": "填写自己手机的 udid ",
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", cap)
driver.get("https://m.baidu.com")
udid 获取方法,iOS 根据提示获取,简单:http://www.pgyer.com/udid/
连接模拟器进行测试:
参考:https://www.cnblogs.com/yoyoketang/p/7571754.html
连接模拟器时会自动安装 WebDriverAgent
在真机上是安装.ipa的包,在模拟器上是安装.app的包。
这是两种不同的打包方法,也就是说从appstore这种渠道下载的.ipa是无法安装到模拟器上的,必须要找你们开发专门针对iOS模拟器打个模拟器的包,后缀是.app
此处有一个供练习使用的app包,appium 官方的的包,可以下载:https://github.com/appium/appium
TestApp.app 的包在如下路径中
appium-master/sample-code/apps/TestApp.app
可在命令行中进行安装此app
xcrun simctl uninstall booted TestApp.app
也可将该 app 文件直接鼠标拖动到模拟器中进行安装
安装完成后可用如下进行启动 app
from appium import webdriver
cap = {
"automationName": "XCUITest",
"platformName": "ios",
"platformVersion": "12.2",
"deviceName": "iPhone 6",
"app": "/Users/zhng/Desktop/appium-master/sample-code/apps/TestApp.app" # .app 文件的路径
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", cap)
driver.find_element_by_id('IntegerA').send_keys('你好1 TestApp!')
如下有报错但不影响基本功能,可后续调整