Appium 环境搭建

appium介绍


官方网站

1、特点


appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。

  • “移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。

  • “移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。

  • “混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。

重要的是,appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。

2、appium与Selenium


appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。

appium客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDriver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction 接口)的元素。

appium服务端定义了官方协议的扩展,为appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载App。这就是为什么我们需要appium特定的客户端,而不是通用的Selenium 客户端。当然,appium 客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了Selenium 客户端,所以他们仍然可以用来运行通用的Selenium会话。

3、支持多平台、多语言


appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。

appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及Selenium(WebDriver)如何做到支持多语言的原因;

appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量;

语言/框架Github地址
Rubyhttps://github.com/appium/ruby_lib
Pythonhttps://github.com/appium/python-client
Javahttps://github.com/appium/java-client
JavaScript (Node.js)https://github.com/admc/wd
Objective Chttps://github.com/appium/selenium-objective-c
PHPhttps://github.com/appium/php-client
C# (.NET)https://github.com/appium/appium-dotnet-driver
RobotFrameworkhttps://github.com/jollychang/robotframework-appiumlibrary

4、appium工作原理


在安装和介绍appium之前,非常有必要介绍一下appium是如何工作的。

通过上面一张图简单展示了appium的工具原理。

首先,appium支持多语言,因为它针对流的几种语言分别开发的相应的appium库。好处就是我们可以选择自己熟悉的语言编写appium脚本。

其次,appium支持多平台,包括MAC和Windows。它针对这两大平台开发了appium-Server。

最后,appium又同时支持Android 和 iOS两个操作系统。

这就使得appium变得非常灵活。

当我在MAC平台上,通过Python(python-client )编写了一个appium自动化脚本并执行,请求会首先到 appium.dum (MAC下的appium-Server),appium-Server通过解析,驱动iOS设备来执行appium自动化脚本。

或者,我在Windows平台上,通过Java( java-client )编写了一个appium自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window下的appium-Server),appium-Server通过解析,驱动Android虚拟机或真机来执行appium脚本。

所以,你会看到appium的强大之处就在于此。

5、你都需要安装什么?


这才是你最关心的问题,使用appium都需要安装些什么?其实,从appium工作原理你就应该知道需要装什么了。

  • 编程语言

想用 Python 的同学,点这里

 

 

安装Android SDK


Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序。简单来讲,Android SDK 可以看做用于开发和运行 Android 应用的一个软件。

1、下载Android SDK


我在官网上没有找到单独 Android SDK 的下载链接,官方推荐下载包含 Android SDK 的 Android Studio。

Android Studio & Android SDK 下载地址:https://developer.android.com/studio/index.html?hl=zh-cn

拖到页面底部,你将找到下载链接,根据自己的平台选择对应的链接下载。

一方面是包含 Android SDK 的 Android Studio 的安装包很大。另一方面它们二者也不是强关联的。因为 Appium也会用到 Android SDK,而 Android Studio 也可以调用真机来运行 Android程序。

所以,Android SDK 下载地址(才是我们想要的):

http://tools.android-studio.org/index.php/sdk

你可以通过别的网站进行下载,身为IT从业人员,如何利用搜索工具和科学上网工具是你的必备技能。

将下载的 Android SDK 解压,将得到如下目录。

图 Android SDK目录

2、设置Android环境变量


下面设置 Android 环境变量,方法与Java环境变量类似。我本机的目录结果为:

D:\android\android-sdk-windows

下面设置环境变量:

“我的电脑” 右键菜单 ---> 属性 ---> 高级 ---> 环境变量 ---> 系统变量 ---> 新建...

变量名变量值
ANDROID_HOMED:\android\Android\sdk

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

变量名变量值
PATH;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;

3、安装Android 版本


双击 SDK Manage.exe 启动SDK管理器。

你需要科学上网,或者查找到国内的 Android 镜像,安装一个版本的Android虚拟机。你可以根据自己的喜好选择安装 Android 5.0 /5.1 /6.0 /7.0 版本。

这里推荐一个网站:http://www.androiddevtools.cn/

3、安装Android 版本


双击 AVD Manage.exe 启动AVD管理器。

点击 “Create...” 按钮,创建Android虚拟机。

不要选择超过电脑屏幕分辨率的Device,其它选项参考上图。点击 “OK” 创建完成。在 AVD Manage 工具中选中创建的Android虚拟机,点击 “Start...” 按钮启动。

Android模拟器已经启动。

想用 Java 的同学,点这里

  • appium client

参考 3、支持多平台、多语言 的列表,根据你选择的语言来选择对应的 appium-client。

  • appium Server

参考 4、appium工作原理 的介绍,根据你的系统平台选择 对应的 appium-server。

  • 测试运行环境

你需要一个Android模拟器,或 一个 Android 手机,或 一台 iPhone 手机。

 

 

我们可以在Appium官方网站上下载操作系统相应的Appium版本。

https://bitbucket.org/appium/appium.app/downloads/

当前最新版本为 AppiumForWindows_1_4_16_1.zip ,注意这是一个 Windows 版本,如果你的电脑为MAC请下载 appium-1.5.3.dmg 。虽然你已经看到了这些下载包,但我不保证你能下载的下来。

所以,再来提供一个百度网盘的下载链接:https://pan.baidu.com/s/1pKMwdfX

我们以 Windows 为例,将下载的 AppiumForWindows.zip 进行解压,点击 appium-installer.exe 进行安装。

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

Appium-Server已经可以打开了。至于Appium的使用我们放到后面的章节进行介绍。

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

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

C:\Program Files\Appium\node_modules\.bin

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

 

前提条件


当你点击这一章时,说明你是打算使用 Java 语言编写 appium 自动化测试脚本的。

1、安装 Java 环境 ,我想这一步你已经搞定了

2、安装 IntelliJ IDEA , 当然,你喜欢用 Eclipse 也可以,不过,我仍然推荐 IDEA。

3、安装 Maven, Java开发必备啊!

Maven 安装 Java-client


首先,启动IntelliJ IDEA,创建Maven项目(参考selenium java教程),然后在maven配置文件中添加Java-client配置。

<dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>5.0.0-BETA9</version>
    <scope>test</scope>
</dependency>

最新版本号可以到 github Java-client开源项目上查看。

 

运行第一个Appium测试


  • 第一步,启动Android模拟器。

  • 第二步,启动 Appium Server。

点击右上角 三角 按钮,注意Appium的启动日志。

> Launching Appium server with command: D:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --platform-name Android --platform-version 23 --automation-name Appium --log-no-color
> info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)
> info: Appium REST http interface listener started on 127.0.0.1:4723
> info: [debug] Non-default server args:
 {"address":"127.0.0.1","logNoColors":true,"platformName":"Android","platformVersion":"23","automationName":"Appium"}
> info: Console LogLevel: debug

Appium在启动时默认占用本机的4723端口,即:127.0.0.1:4723

  • 第三步,编写第一个Appium测试程序。在appium.tests项目下创建,AppiumDemo类。
package com.example;

import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;

import java.net.MalformedURLException;
import java.net.URL;


public class CalculatorTest {

    public static void main(String[] args) throws MalformedURLException, InterruptedException {

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "Android Emulator");
        capabilities.setCapability("automationName", "Appium");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("platformVersion", "6.0");
        capabilities.setCapability("appPackage", "com.android.calculator2");
        capabilities.setCapability("appActivity", ".Calculator");

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

        driver.findElement(By.name("1")).click();
        driver.findElement(By.name("5")).click();
        driver.findElement(By.name("9")).click();
        driver.findElement(By.name("delete")).click();
        driver.findElement(By.name("+")).click();
        driver.findElement(By.name("6")).click();
        driver.findElement(By.name("=")).click();
        Thread.sleep(2000);

        String result = driver.findElement(By.id("com.android.calculator2:id/formula")).getText();
        System.out.println(result);

        driver.quit();
    }

}

通过 IDEA 运行程序。将会看到 Android 模拟器如下运行界面:

 

什么是 Appium-desktop?


项目地址:https://github.com/appium/appium-desktop

项目描述:

Appium Server and Inspector in Desktop GUIs for Mac, Windows, and Linux。

Appium 移动测试中有个很重新的组件 Appium-Server,它主要用来监听我们的移动设备(真机或模拟器),然将不同编程语言编写的 appium 测试脚本进行解析,然后,驱动移动设备来运行测试。

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

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

下载与安装


appium-desktop 下载地址:这里

根据自己的平台选择相关的包进行下载。本文以 Windows 为例,所以选择 appium-desktop-Setup-1.2.4.exe 文件进行下载。

安装过程太简单了,双击 exe 文件,然后,等待安装完就好了,中间都不需要你设置任何选项。所以,这里就不贴图了。

启动运行


安装完成桌面会生成一个紫色的 appium 图标,双击打开。

默认显示监控的 host 和 port ,这和 Appium-Server中是一致的。点击 “Start Server V 1.7.1” 按钮启动服务。

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

至于 Appium-Server , 你可以把它卸载了!

 

Desired Capabilities


Desired Capabilities 在启动 session 的时候是必须提供的。

Desired Capabilities 本质上是以 key value 字典的方式存放,客户端将这些键值对发给服务端,告诉服务端我们想要怎么测试。它告诉 appium Server这样一些事情:

  • 本次测试是启动浏览器还是启动移动设备。

  • 是启动Andorid还是启动iOS。

  • 启动Android时,app的package是什么。

  • 启动Android时,app的activity是什么。

  • ...

Desired Capabilities 配置


Appium 的 Desired Capabilities 基本配置如下:


DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "5.1");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");

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

  • deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4...

  • automationName:使用哪种自动化引擎。appium(默认)还是Selendroid。

  • platformName:使用哪种移动平台。iOS, Android, orFirefoxOS。

  • platformVersion:指定平台的系统版本。例如指的Android平台,版本为5.1。

  • appActivity:待测试的app的Activity名字。比如MainActivity、.Settings。注意,原生app的话要在activity前加个"."。

  • appPackage:待测试的app的Java package。比如com.example.android.myApp, com.android.settings。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值