淘先锋技术网

首页 1 2 3 4 5 6 7

相关链接

官网:http://appium.io/

使用Java编写API文档:http://appium.github.io/java-client/

学习文档:https://www.cnblogs.com/fnng/p/4540731.html

个人站点:http://per-dyw.xyz/

技术展示

安装(仅Windows)

若电脑上未安装node.js,请先安装node.js
  • 下载安装包,下载地址为:https://nodejs.org/en/download/
  • 选择对应的版本,下载后,打开安装,一直下一步即可(可修改安装目录)
  • 安装完成后,检测下path环境变量是否配置了Node.js,打开Windows命令提示符,输入命令"path",输出如下结果:
    image
Android的SDK安装

相信Android开发人员都已安装好Android的SDK了,但Android的环境变量你设置了么?我本机的目录为:E:\Android\Sdk。

下面设置环境变量:“我的电脑” 右键菜单 —> 属性 —> 高级 —> 环境变量 —> 系统变量 —> 新建:

变量名变量值
ANDROID_HOMEE:\Android\Sdk

找到 path 变量名—> “编辑” 添加:

变量名变量值
PATH;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
安装 Appium Server

可以在Appium官方网站上下载操作系统相应的Appium版本,下载地址:https://bitbucket.org/appium/appium.app/downloads/,
若无法下载,也可使用提供的百度网盘下载地址:

链接: https://pan.baidu.com/s/1UdbSk02TzUS8BQKzOQFYfw 提取码: zus2

下载的 AppiumForWindows.zip 进行解压,点击 appium-installer.exe 进行安装。

[外链图片转存失败(img-P0g6TY8w-1568969362787)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(1)].png)

根据提示,一步一步进行安装,这里不再啰嗦。最终在会桌面上生成 Appium图标 , 双击启动,appium server 界面如下:

[外链图片转存失败(img-dxsEhT6G-1568969362788)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(2)].png)

最后,打开Windows命令提示符,输入“appium-doctor”命令,如果出现以下提示,说明你Appium所需要的各项环境都已准备完成。

[外链图片转存失败(img-9C6ADH0q-1568969362789)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(3)].png)

注:如果提示:“appium-doctor”不是内部或外部命令,找到Appium的安装目录,例如:

E:\Appium\node_modules\.bin

添加到环境变量path下面(参考Java环境的设置)

Appium-desktop
Appium-desktop是什么

Appium-Server有一两年没有更新了。Windows版在 2015 年底止步于的 AppiumForWindows_1_4_16_1.zip。

于是,新的工具 Appium-desktop 来了! 它来继续 Appium-Server的使命,当然, Appium-Server当前仍然是可用的。

注:Appium-Server最高支持模拟器Android版本为6.0,推荐使用 Appium-desktop。

下载与安装

下载地址:https://github.com/appium/appium-desktop/releases
根据自己的平台选择相关的包进行下载。本文以 Windows 为例,选择 Appium-windows-1.12.1.exe 文件进行下载,下载完成后,双击 exe 文件,等待安装完成即可。

启动运行

双击打开桌面上紫色的 appium 图标

[外链图片转存失败(img-ftguWpQd-1568969362789)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(4)].png)

点击 “启动服务器 V 1.12.1” 按钮启动服务

[外链图片转存失败(img-UsYYuao6-1568969362790)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(5)].png)

现在可以启动移动设备(真机或模拟器),编写Appium自动化测试脚本,可以通过 Appium-desktop 来运行测试。

连接真机测试

主要讲解如何连接真机进行测试。

  • 手机通过USB连接电脑,选择传输文件(MTP)
    [外链图片转存失败(img-qpXUTQpC-1568969362790)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(6)].png)
  • 打开开发者选项,允许USB调试,允许USB安装
    [外链图片转存失败(img-31ApeuaI-1568969362791)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(7)].png)
  • 打开Windows命令提示符,输入"adb devices",可弹出电脑是否连接真机,获取到真机的devices
    [外链图片转存失败(img-JynJ0Z2p-1568969362791)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(8)].png)

注:如果提示:“adb”不是内部或外部命令,找到adb的安装目录,例如:

E:\Android\Sdk\platform-tools

添加到环境变量path下面(参考Java环境的设置)

java-client安装与测试

此次主要讲解的是使用 Java 语言编写 appium 自动化测试脚本。

前提条件
  • 安装 Java 环境
  • 安装 IntelliJ IDEA 或 Eclipse (下面讲解的是Eclipse)
  • 安装 Maven
Maven 安装 Java-client
  • 启动Eclipse,创建Maven项目
    [外链图片转存失败(img-ch1xAdQd-1568969362792)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(9)].png)
  • 导入 appium 的 Java-client
    [外链图片转存失败(img-JmBqYhvB-1568969362793)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(10)].png)
  • 输入项目名称,id即可下一步
  • 最后,pom.xml中的信息应如下:
    [外链图片转存失败(img-xoTzAR4z-1568969362794)(https://per-dyw-images-1253993905.cos.ap-chengdu.myqcloud.com/Android/Appium%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/clipboard%20(11)].png)

注:截止至4月26日为止,最新版本为7.0.0,最新版本号,可在github Java-client开源项目上查看。

开始测试

编写第一个Appium测试程序

启动APP
package com.test;

import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;

public class TestLanuch {

	private static String path = "E:\\Epoint\\epoint\\component\\FramePlugins\\workplatform\\release\\workplatform-release.apk";

	public static void main(String[] args) throws MalformedURLException, InterruptedException {
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability("deviceName", "8ea41751");
		capabilities.setCapability("automationName", "uiautomator2");
		capabilities.setCapability("platformName", "Android");
		capabilities.setCapability("platformVersion", "8.0.0");
		capabilities.setCapability("autoGrantPermissions", true);
		capabilities.setCapability("app", path);

		AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

		driver.quit();
	}
}

  • deviceName:启动哪种设备,是真机还是模拟器,若是真机,填写"adb devices"获取的设备号
  • automationName:使用哪种自动化引擎
  • platformName:使用哪种移动平台
  • platformVersion:指定平台的系统版本。例如指的Android平台,版本为8.0.0
  • autoGrantPermissions:是否自动允许权限
  • app:打包后,apk在本地的路径
  • appPackage:应用的包名
  • appActivity:应用启动页

注:若手机上本无此APP,使用参数app,不使用appPackage和appActivity,若手机上有此APP,使用appPackage和appActivity,不使用参数app。

登录APP
public static void testLogin(long time) {
	if (timer == null) {
		timer = new Timer();
	}
	timer.schedule(new TimerTask() {
		@Override
		public void run() {
			if (driver.getPageSource().contains("com.epoint.workplatform:id/iv_cancel")) {
				System.out.println("APP需要更新");
				System.out.println("取消更新");
				driver.findElement(By.id("com.epoint.workplatform:id/iv_cancel")).click();
				if (timer != null) {
					timer.cancel();
					timer = null;
				}
				testLogin(2000);
			} else if (driver.currentActivity().contains("MainActivity")) {
				System.out.println("用户已登录过");
				System.out.println(driver.getPageSource());
			} else if (driver.currentActivity().contains("launcher.Launcher")) {
				System.out.println("返回桌面");
			} else if (driver.currentActivity().contains("GrantPermissionsActivity")) {
				System.out.println("初次登录");
				System.out.println("授予权限");
				driver.findElement(By.id("android:id/button1")).click();
				if (timer != null) {
					timer.cancel();
					timer = null;
				}
				testLogin(5000);
			} else if (driver.currentActivity().contains("LoginActivity")) {
				driver.findElement(By.id("com.epoint.workplatform:id/et_loginid")).sendKeys("dywei");
				driver.findElement(By.id("com.epoint.workplatform:id/et_pwd")).sendKeys("11111");
				driver.findElement(By.id("com.epoint.workplatform:id/btn_login")).click();
				System.out.println("登录成功");
			} else {
				System.out.println("启动页时间太长");
				System.out.println(driver.getPageSource());
			}
		}
	}, time);
}

技术总结

测试脚本的编写并不局限于Java,支持多种语言,且可以实现一套测试脚本的编写完成Android端和iOS端的自动化测试,有兴趣的可以研究研究。

关注我的技术公众号,每个工作日都有优质技术文章推送。
微信扫一扫下方二维码即可关注:
图片