Appium自动化环境搭建
一.基础环境安装
需要用到的软件如下:
- jdk (32位的就下载32位的,64位的就下载64位的)。(必装)
- Android-sdk_r24.3.4-windows(必装)
- Python(必装,版本自选)
- appium-desktop(必装)
- Node.js(必装)
- Appium-python-Client(python的插件,必装)
- pycharm (编辑器,可使用其他工具)
1.安装Android SDK并配好环境
ANDROID_HOME :C:\Users\18810\AppData\Local\Android\Sdk
path:%ANDROID_HOME%\platform-tools
2.安装Java Sdk并配好环境
关于环境变量的配置参考百度百科:https://jingyan.baidu.com/article/e5c39bf5a418e439d76033ee.html
工具的安装较为简单,此处不详细介绍,具体可百度查询。
二.Appium连接模拟器和真机
1.下载并安装夜神模拟器(或者其它模拟器:AVD Manager/逍遥模拟器)
下载地址 https://www.yeshen.com/,安装直接下一步下一步好了,安装好后启动模拟器。
2.下载appium-desktop
Appium-desktop项目地址:https://github.com/appium/appium-desktop
下载地址:https://github.com/appium/appium-desktop/releases
以Windows为例,所以选择 appium-desktop-Setup-1.7.1.exe 文件进行下载。安装完就好了(注意要下载最新的目前最新的是1.7.1 以后自己再更新)
3.安装测试app
将测试app.apk安装包拖到夜神模拟器即可安装测试app。
4.运行和使用Appium
启动方式:
(1)点击应用图标启动
(2)命令行启动:appium -a 127.0.0.1 -p 4723 --no-reset --session-override
启动服务然后可以看到服务正常启动,点击放大镜进行配置:
配置参数如下(根据SDK具体信息配置):
5.使用adb连接到模拟器
逍遥模拟器的连接方式是:adb connect 127.0.0.1:21503
夜神模拟器的链接方式是:nox_adb.exe connect 127.0.0.1:62001
AVD manager的连接方式是:adb connect 127.0.0.1
使用adb命令时需要确保与sdk中的adb工具包版本一致!!!!,
版本不一致的解决方法:
替换Android sdk的adb.exe,保持和夜神模拟器的nox_adb的版本一致最简单的方法就是复制夜神模拟器安装路径里的adb.exe如下图,把夜神模拟器的bin目录的adb.exe
替换Android sd目录下的adb.exe
注:对于WIN64系统,需将AdbWinApi.dll文件拷贝至C:\Windows\SysWOW64目录下,不然运行adb命令时可能会报错。
6.Appium连接到真机
实际开发的过程中我们可能是直接拿真机来调试。所以Appium如何连接真机呢?原理上和上述方式一致。但真机会稍微复杂一点 :
1)打开手机的USB调试模式
不同的手机打开调试模式的方式不同。一般都在设置中的开发者模式中打开;
2)手机连接电脑
使用数据线连接手机与电脑,然后在cmd中输入adb devices查看是否连接成功;
3)启动Appium服务
cmd下运行命令:adb devices -l 查看UDID,根据查到的UDID启动appium服务,运行命令:
#>appium -a 127.0.0.1 -p 4723 –U ***** --no-reset
-U 参数后面跟的一串字符就是手机的UDID,启动成功后便可运行测试脚本了。
7.SDK manager使用
(1)下载android-sdk-windows工具
(2)运行SDK Manager.exe。由于Android sdk manager是通过google的url下载sdk,所以在使用时需要设置代理,从镜像服务器下载。
Android SDK在线更新镜像服务器:
中国科学院开源协会镜像站地址:
IPV4/IPV6: http://mirrors.opencas.cn 端口:80
IPV4/IPV6: http://mirrors.opencas.org 端口:80
IPV4/IPV6: http://mirrors.opencas.ac.cn 端口:80
上海GDG镜像服务器地址:
http://sdk.gdgshanghai.com 端口:8000
北京化工大学镜像服务器地址:
IPv4: http://ubuntu.buct.edu.cn/ 端口:80
IPv4: http://ubuntu.buct.cn/ 端口:80
IPv6: http://ubuntu.buct6.edu.cn/ 端口:80
大连东软信息学院镜像服务器地址:
http://mirrors.neusoft.edu.cn 端口:80
使用 Android SDK Manager下载sdk时 ,打开主界面,选择「Tools」、「Options」,弹出『Android SDK Manager - Settings』窗口:
在『Android SDK Manager - Settings』窗口中,在「HTTP Proxy Server」和「HTTP Proxy Port」输入框内填入 mirrors.neusoft.edu.cn 和 80,并且选中「Force
https://…sources to be fetched using http://…」复选框。
设置完成后单击「Close」按钮关闭重新打开即可。如下图:
连接服务器成功后,可根据各自需要下载工具:
8.AVD manager使用
(1)使用SDK manager安装完成工具后,启动AVD manager设置模拟器:
(2)新建完成后点击启动
启动成功后即可使用adb connect 127.0.0.1命令连接模拟器,运行脚本测试:
9.Monkeyrunner使用
(1)进入Monkeyrunner目录:在SDK的tools\bin目录下面,可将此路径写在path里面;
(2)运行monkeyrunner:启动CMD,输入monkeyrunner;
(3)常见错误解决办法:
错误1——运行后报下列错误
SWT folder '..\framework\x86' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
解决办法——
用记事本打开monkeyrunner.bat文件 修改以下位置:
错误2——运行后提示adb找不到
解决方法——在tools下新建framework文件夹,复制adb.exe到此文件夹下
三. Appium自动化测试
使用Appium实现自动化的基本过程是: python脚本调用Appium,Appium控制模拟器或真机进行自动化操作。
1.操作步骤
(1)打开夜神模拟器,DOS窗口输入:adb connect 127.0.0.1:62001
(2)打开appium,deviceName输入127.0.0.1:62001并启动
(3)运行python脚本
2.脚本示例
四.参考信息
1.查看appPackage和appActivity
找到Android sdk目录,在build-tools中找到aapt,然后把需要编译的文件挪过来,或者指定文件的路径,通过反编译来获取包名及入口。在CMD中输入:
aapt dump badging c:\software\taobao.apk
通过下面的结果可以看出package:name="com.taobao.taobao";
其中下面的内容是appActivity
2.连接模拟器命令
adb connect 127.0.0.1
逍遥:adb connect 127.0.0.1:21503
夜神模拟器 adb connect 127.0.0.1:62001
3.常用工具下载地址
http://www.androiddevtools.cn/
4.常用学习教程地址
(1)Appium自动化相关
https://www.cnblogs.com/fnng/p/4540731.html
(2)Android SDK Manager和AVD Manager使用
https://www.cnblogs.com/kangjianwei101/p/5621238.html
5.Appium的设置参数解释
|
1 2 3 4 5 6 7 |
|
1.platformName填入Android(ios的话后面的几个参数还是不一样的这里目前是按照安卓讲的)
2.deviceName这个是比较重要。这个是填入夜神模拟器的驱动地址一般默认是127.0.0.1:62001。
3.appPackage和appActivity如何获取见第1小节
4.platformVersions是夜神模拟器的版本号目前是4.4.2
6.Appium获取元素的方式
- 通过xpyth定位:find_element_by_xpath(“//android.widget.TextView[10]”) xpath下标从1开始,使用完整的classname
- 通过text name:find_element_by_name(name对应uiautomator扫描后text的内容)
- 通过id:find_element_by_id(id对应resource-id)
- 通过classname定位:find_element_by_class_name(class_name对应class)
- 通过accessibility id:find_element_by_accessibility_id(accessibility_id对应content-desc)
- 定位到某个文本框,并输入内容:
- driver.find_element_by_id(“xxxxx”) .send_keys(“123456”)
- 滑动屏幕:
- 获取屏幕尺寸 width=self.driver.get_window_size()[‘width’] height=self.driver.get_window_size()[‘height’]
- 滑动屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000)