一、Appium环境搭建
1.安装Appium
通过下载dmg安装:
官方下载: Redirecting
国内下载: Appium各版本安装包_免费高速下载|百度网盘-分享无限制 (推荐)
2.下载Android SDK,链接 http://down.tech.sina.com.cn/page/45703.html
3.安装Xcode,下载地址: Sign In - Apple --iOS
4.使用GUI工具安装Appium(AppiumUI程序),下载地址: Redirecting 注:由于官网下载总是不成功,共享一个百度云盘下载地址: appium_免费高速下载|百度网盘-分享无限制
5.命令行安装
使用Homebrew来安装Carthage
Carthage使用心得-让自己的项目支持Carthage - 简书
1>安装Homebrew 地址Homebrew — The Missing Package Manager for macOS (or Linux)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2>安装brew,地址Homebrew — The Missing Package Manager for macOS (or Linux) 命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3>安装完homebrew,安装carthage
执行下面命令
$ brew update
$ brew install carthage
4>#安装nodejs
brew install node
安装brew完成,需要输入brew help激活使用
brew list 列出已安装的软件
brew update 更新brew
brew home 用浏览器打开brew的官方网站
brew info 显示软件信息
brew deps 显示包依赖
brew search node
先 node -v
看看是否安装
rpm -qa | grep node
brew list node
#安装appium
npm install -g appium 此命令安装比较慢,注意与taobao镜像安装后的命令不同
#安装python client
pip3 install Appium-Python-Client
注:
如果遇到网络问题导致npm安装appium失败的情况,可以尝试使用淘宝的镜像
安装Appium或者用
$ npm install cnpm -g --registry=https://registry.npm.taobao.org
$ npm view appium versions #查看appium所有的版本号
使用淘宝镜像后,安装命令对应的变成:
cnpm install -g appium
注:
测试IOS10系统请严格按照XCUITest-Driver文档配置。
6.PS.诊断(保留,我用的是在appium中,点击Doctor方法来查看)
#安装appium诊断工具
sudo npm install -g appium-doctor
安装完成,使用appium诊断:
命令:appium-doctor
可以看到环境目录
诊断通过后,如下图所示:
7.在Appium中点击Doctor图标,出现如下提示
如图上图,ANDROID_HOME,JAVA_HOME未设置
设置环境变量
/Users/qa
MacBook-Pro:~ qa$ vim ~/.bash_profile 1编辑模式
MacBook-Pro:~ qa$ source ~/.bash_profile 2重新加载配置文件
MacBook-Pro:~ qa$ cat ~/.bash_profile 3查看配置文件
例子中sdk目录为:/Users/xx/work/android/sdk , jdk目录为:/Library/Java/JavaVirtualMachines/jdk1.7.0_76.jdk/Contents/Home
在第1步,按i进入编辑模式插入下列内容
我的SDK目录为:/Users/qa/Library/Android/sdk(查看方法:在AndroidStudio-Preference-System Setting-Android SDK查看sdk目录)
或者
.bash_profile 插入内容如下
#Android home
export ANDROID_HOME=/Users/qa/Library/Android/sdk
#Android path
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools
#Java home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
#Java bin path
export PATH=$PATH:$JAVA_HOME/bin
按ESC退出编辑模式
输入 :wq 保存退出
查找Java_home路径的命令/usr/libexec/java_home
搭建环境过程,误把alias写lisa。找了半天原因。。。
8.按步骤123执行完后,再次点击Appium的Doctor按钮,出现如下界面,证明成功
9.在手机端安装app,安装后,手机连接电脑。在终端输入adb命令
adb在配置环境变量的时候已经配置了,可以去目录下查看是否有adb
cd /Users/qa/Library/Android/sdk/platform-tools/
刷新配置文件source ~/.bash_profile
adb devices 显示当前运行的全部模拟器
adb shell 进入adb的shell模式
pm list package 查看已安装的包,显示所有已经安装的包名
可以grep一下,pm list package |grep "package"
adb logcat -s ActivityManager -s是过滤(silent)ActivityManager是将此加入到白名单,查看日志前提是本地得安装app
IOWE代表日志类型,后面是系统日志关键字,(1074)是pid进程号,然后是包名,后面是首页启动项
10.也可以直接问RD
再次点击安卓小人标识,上面的窗口隐藏,点击launch再点击inspector
iOS用Appium Inspector比较好。Android用uiautomatorviewer 比较好
11.在终端输入uiautomatorviewer ,直接启动界面
注意:有时,点击小人安卓报错,需要多试几次。再不行就在终端重新启动uiautomatorviewer
此时在手机上点击进入app某个页面,再次点击左上角红框的标识,模拟器里的页面显示与手机上一致。点击某个元素,查看右侧,显示位置。获取元素位置,写入代码里
12.下载安装pycharm,写入如下代码
12.下载安装pycharm,写入如下代码
# -*- coding:utf-8 -*-
from appium import webdriver
hub = 'http://localhost:4723/wd/hub'
caps = {}
caps['platformName'] = 'android'
caps['udid'] = '2e9d9961'
caps['deviceName'] = 'android_1'
# caps['automationName'] = 'XCUITest'
caps['newCommandTimeout'] = 30000
# caps['bundleId'] = 'com.xx.xx'
caps['appPackage'] = 'com.xxx.xx.'
caps['appActivity'] = '.activity.Welcome'
# caps['appActivity'] = '.city.BaseCityActivity'
# caps['app'] = '/Users/xx/PycharmProjects/appiumtest/xx-5658.apk'
wd = webdriver.Remote(hub, caps)
wd.find_element_by_android_uiautomator(u'new UiSelector().text("北京")').click()
代码里udid获取需要在终端输入adb devices,查看
启动appium服务,执行程序,才不会报错
坑:再次运行代坑:再次运行代码,失败
提示org.openqa.selenium.SessionNotCreatedException: A new session could not be created. Details: Problem getting session data for driver type IosDriver; does it implement 'get driverData'? (WARNING: The server did not provide any stacktrace information)
或者Problem getting session data for driver type AndroidDriver; does it implement 'get driverData
解决办法:
命令行启动,则添加--session-override:
appium -p 4723 --session-override
参考appium出现Problem getting session data for driver type AndroidDriver; does it implement 'get driverDat_命令行添加 –session-override 参数
搭完了才发现这个教程不错
http://www.infoshare.cc/2016/09/29/appium%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE-mac.html