Appium自动化测试实战

来源:互联网 发布:道路照度计算软件 编辑:程序博客网 时间:2024/05/16 08:21
一,简介:
Appium 是一个开源并且跨平台的,支持多种脚本语言(java,Python,C#等等)适用于原生的或混合的移动应用(hybrid mobile apps)的自动化测。Appium的使用原理是通过WebDriver来 驱动安卓或者iOS移动应用.
二,工作原理:
Appium 的工作核心是一个遵守REST设计风格的web 服务器,它接受客户端(测试代码)的连接,同时也接收客户端的命令,在手机设备(Bootstrap.jar)执行命令,然后通过HTTP的响应收集命令执行的结果。这种架构给我们提供了很好的开放特性:只要某种语言有http 客户端的api,我们就可以通过这个语言写我们自己的测试脚本.
基于IOS系统的工作原理图

基于Android系统的工作原理图

三,环境搭建(Android):
1.下载node.js 并把路径加入环境变量。官网 https://nodejs.org/en/download/
2.配置Android sdk环境 并把路径加入环境变量
2.1.确保安装了 Level 17 或以上的版本 api
2.2.设置 ANDROID_HOME 系统变量为你的 Android SDK 路径
2.3.把 tools 和 platform-tools 两个目录加入到系统的 Path 路径里
3.安装Apache Ant 并把路径加入环境变量。官网 http://ant.apache.org/bindownload.cgi
4.安装JDK 并把路径加入环境变量。官网 http://maven.apache.org/download.cgi
5.安装Appium, 官网 http://appium.io
整个环境搭建成功以后,输入appium-doctor,检查环境是否搭建成功

四,搭建项目(JAVA):
1.下载eclipse,从selenium官网,下载基于java和selenium的类库 。官网http://www.seleniumhq.org/download/
2. 添加测试包以及类库到项目工程中
3.查找页面元素,下载模拟器genymotion,连接模拟器,将测试包安装并运行。通过sdk自带的工具uiautomatorviewer.bat,连接到当前正在运行的页面,点击即可查看当前页面元素,查找方法一般包括(id,name.xpath)
4.连接到模拟器,在cmd模式下运行 adb devices,可以查看到当前连接的真机或者模拟器的设备号,
5.在不需要开发文档的情况,获取当前页面的activity,再cmd模式下运行 adb shell dumpsys window w|grep \\/ |grep name=
6.运行登录操作。添加模拟器或真机设备信息到main 函数。流程控制在另外的页面,添加登录流程的操作,找到流程中所需要的页面元素。
示例代码:
 public static   void setup() throws Exception {
File classpathRoot  = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot,"devApp"); 
DesiredCapabilities capability = new DesiredCapabilities();
capability.setCapability("noReset", true); //不需要重复安装
capability.setCapability("devices", "Android");
// capability.setCapability("deviceName", "192.168.174.101:5555");//虚拟机名称或者真机名称
  capability.setCapability("deviceName", "192.168.198.101:5555");
capability.setCapability(CapabilityType.BROWSER_NAME, "");
capability.setCapability(CapabilityType.VERSION, "5.0.0");
capability.setCapability(CapabilityType.PLATFORM,  "ANDROID");
capability.setCapability("app", app.getAbsolutePath());
capability.setCapability("appPackage", "packagename");
capability.setCapability("appActivity", "activityname"); 
 driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), capability);