Appuim菜鸟级入手-Android自动化
一、Appium环境搭建(mac系统)
1.安装Appium
通过下载dmg安装:
官方下载:http://appium.io/
国内下载:http://pan.baidu.com/s/1jGvAISu(推荐)
2.下载Android
SDK,链接http://down.tech.sina.com.cn/page/45703.html
3.安装Xcode,下载地址:https://developer.apple.com/downloads/--iOS
4.使用GUI工具安装Appium(AppiumUI程序),下载地址:http://appium.io/
5.命令行安装
#安装nodejs
brew install 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诊断工具
npm install -g appium-doctor
使用appium诊断:
诊断通过后,如下图所示:
7.在Appium中点击Doctor图标,出现如下提示
如图上图,ANDROID_HOME,JAVA_HOME未设置
设置环境变量
lishandeMacBook-Pro:~ lishan$ vim ~/.bash_profile
1编辑模式
lishandeMacBook-Pro:~ lishan$ source
~/.bash_profile 2重新加载配置文件
lishandeMacBook-Pro:~ lishan$ cat ~/.bash_profile
3查看配置文件
例子中sdk目录为:/Users/zhaoye/work/android/sdk,jdk目录为:/Library/Java/JavaVirtualMachines/jdk1.7.0_76.jdk/Contents/Home
在第1步,按i进入编辑模式插入下列内容
我的SDK目录为:/Users/lishan/Library/Android/sdk(查看方法:在AndroidStudio-Preference-System Setting-Android SDK查看sdk目录)
#Android home
export ANDROID_HOME=/Users/lishan/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保存退出
8.按步骤123执行完后,再次点击Appium的Doctor按钮,出现如下界面,证明成功
9.在手机端安装美团app,安装后,手机连接电脑。在终端输入adb命令
adb在配置环境变量的时候已经配置了,可以去目录下查看是否有adb
刷新配置文件source ~/.bash_profile
adb devices显示当前运行的全部模拟器
adb shell进入adb的shell模式
pm list package查看已安装的包,显示所有已经安装的包名
可以grep一下,pm list package |grep
"meituan"
adb logcat -s ActivityManager -s是过滤(silent)ActivityManager是将此加入到白名单,查看日志前提是本地得安装app
IOWE代表日志类型,后面是系统日志关键字,(1074)是pid进程号,然后是包名,后面是首页启动项
10.也可以直接问RD
再次点击安卓小人标识,上面的窗口隐藏,点击launch再点击inspector
iOS用Appium Inspector比较好。Android用uiautomatorviewer比较好
11.在终端输入uiautomatorviewer,直接启动界面
注意:有时,点击小人安卓报错,需要多试几次。再不行就在终端重新启动uiautomatorviewer
此时在手机上点击进入美团某个页面,再次点击左上角红框的标识,模拟器里的页面显示与手机上一致。点击某个元素,查看右侧,显示位置。获取元素位置,写入代码里
12.下载安装pycharm,写入如下代码
# -*- coding:utf-8 -*-
fromappiumimportwebdriver
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.meituan.imeituan'
caps['appPackage'] ='com.sankuai.meituan'
caps['appActivity'] ='.activity.Welcome'
# caps['appActivity'] = '.city.BaseCityActivity'
# caps['app'] = '/Users/lilei/PycharmProjects/appiumtest/aimeituan-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