前言
最近,因为项目的物联设备需要跟云端通信,需要接入手机APP。在这里记录一些Android自动化过程的准备工作和踩坑。
一、环境安装
方式一、公司自己的一键安装
略
方式二、自己百度安装
这个方法没有从头到尾去实践,主要是电脑连接Android APP需要用到什么,就装什么。目前想法是利用robotframework作为webDriver script,因此,python环境、ADB环境、JAVA环境、RF环境、Appium环境等等都得装。简单罗列过程:
- 安装JDK。在www.orcale.com下载 java SE,安装。
- 安装Android SDK。在 developer.android.com下载 Get the Android SDK。
- 安装Python。
- 安装selenium。
- 利用Python pip 安装robotframework-selenium2library robotframework-ride. AppiumLibrary
- 安装 wxPython-4.0.7.post2-cp27-cp27m-win32.whl。
- 安装appium-desktop-setup.exe(默认包含node.js).
- 安装appium Client,在Appium-Python-Client下执行 python setup.py install.
- 安装AppiumDesktop(比appium自带的桌面端好用的开源桌面端).
配置检查: - 检查SDK:java –version。
- 检查node:node -v
- 检测appium:appium-doctor
- 检查服务运行:appium.cmd
- 确保环境变量都加好
二、运行
打开
用appium桌面端打开就行:
运行服务器:
点击右上角放大镜:
我们只要把appium开启来就行,通过RF脚本去操作手机端,操作过程日志都会显示在第二张图上。第三张图是appium自带的定位元素的功能。
三、元素定位
- 方法一、appium inspector
可以参考:https://www.jianshu.com/p/0a19409c0d37 - 方法二、uiautomatorviewer
四、踩坑
- Appium运行报错4.4W:
- 删除SDK文件夹下面android4.4W。
- Appium运行报错255权限错误等:
- 执行脚本的activity需要先获取一定的权限,可以考虑换一个activity开始,一般是打开APP的第一个页面
- Appium运行提示服务被占据:
- 重启appium服务
- 关注手机是否跳出获取unlock安装的弹窗,是就点击确定
- Click button点击报错(一般情况下xpath定位是可行的,但是有时候因为环境编码不一致,无法利用xpath过滤器)错误代码:TypeError: exceptions must be old-style classes or derived from BaseException, not unicode
- 换成click element 选择过滤器为id,参数为id= 或者 name=
- Id对应的就是Nodedetail下的resource-id
- Id表现形式有几种:比如update_left_button或者id=com.hikvision.sentinels:id/update_left_button均能够表示ID
- Id和name对于node元素来说的唯一的标记,因此只需要选择就能唯一定位,但是其他的属性定位可能需要加上编号
- Click button点击按钮,根据按钮名称或当前界面按钮数量的序号点击,不使用控件id 使用这个关键字意味着要点击的对象是一个按钮 在iOS中的类名为UIAButton 在Android中的类名为android.widget.Button
- Uiautomatorviewer运行”Error obtaining UI hierachy问题:
- 使用程序被运行过了,重启一下就好
- win10 下AndroidStudio无法连接真机:
- 需要禁用驱动程序强制签名
- 右下角通知全部展开—所有设置—更新和安全—立即重启—高级选项—点击重启—选择7,等待重启完成。
- 在设备管理下—便携设备,若正常显示连接的设备,则表示驱动安装好了
- Android Studio中no module,无法运行APP:
五、编码
装完环境、踩完坑,就可以利用RF的RIDE编写代码了,RF自带的编辑器不怎么好用,可以配置eclipse使用。