Appium自动化测试Android

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/damnivictory/article/details/54629305

Appium自动化测试Android

Appium相关环境配置

SETUP(官方给的配置步骤,其中有些可以省略)
1. Install node.js (v.0.12 or greater). Use the installer from nodejs.org.
2. Install appium-doctor in order to check your system: npm install appium-doctor -g. Then run by typing appium-doctor.
3. Install the Android SDK. You will need to run the ‘android’ tool (included in the SDK, in the tools folder) and make sure you have an API Level 17 or greater API installed. Set ANDROID_HOME to be your Android SDK path and add the tools and platform-tools folders to your PATH variable.
4. Install the Java JDK and set JAVA_HOME to your JDK’s bin folder.
5. Install Apache Ant or use the one that comes with the Android Windows SDK in the eclipse\plugins folder. Be sure to add the folder containing Ant to your PATH variable.
6. Install Apache Maven and set the M2HOME and M2 environment variables. Set M2HOME to the directory maven is installed in, and set M2 to %M2HOME%\bin. Add the path you used for M2 to your PATH.
7. Install Git Be sure to install Git for windows to run in the regular command prompt.
8. Install cURL.
Now that you’ve downloaded everything, if you’re running from source, run the following in the folder where you cloned appium:
rm -rf node_modules
npm install

source:http://appium.io/slate/en/1.5/?java#limitations


配置jdk和Android SDK

如果在你的机器上开发过Android项目那么这里就不需要配置jdk和Android SDK了。需要检查你的环境变量,需要有JAVA_HOMEANDROID_HOME,并且将这两个添加进path里面。
添加JAVA_HOME和ANDROID_HOME变量路径

点击上图中的Path,然后点击编辑。然后添加,如下图

将JAVA_HOME和ANDROID_HOME添加进系统环境变量里

如果你在电脑上面没有安装过jdk和Android SDK,那么你需要先安装这两个东西。JDK下载Android SDK下载

note:检查是否安装好,在DOS窗口里面输入javac -versionjava -version查看版本号,如果不报错则说明环境变量配置好了。这里的Android SDK的环境变量以防万一,可以加上,如上图中的ANDROID_SDK,里面的路径分别为C:\Android\sdk\platforms;C:\Android\sdk\tools;C:\Android\sdk\platform-tools,并将ANDROID_SDK添加进Path里面。
Jdk环境变量配置好了


配置nodejs

如果你装过nodejs那么这里需要检查你的nodejs和npm的版本和环境变量是否配好,如果没装过,则先下载安装,然后配置环境变量,在安装的时候可以勾选自动配置环境变量。nodejs下载地址
配置好后如下图
配置好nodejs后的环境变量

note:检查是否配置好,在DOS窗口里面分别输入node -vnpm -v查看对应的版本号,如果不报错则表示环境变量配置好了。
nodejs环境变量配置好了


安装配置appium

这里有多种安装appium的方式一种是,在你的nodejs环境变量配置好后,打开DOS窗口,输入npm install –g appium,这种方法我多次使用多次失败。所以我选择第二种,去appium的官网下载安装。appium下载appium官网(dmg后缀是mac机器对应的安装文件,Zip是windowns对应的安装文件)
配置好appium后的环境变量
note: 安装完appium后,我们可以查看我们以上所有的环境变量是否都配置正确了。在DOS窗口下输入appium-doctor查看所有的环境是否配置好(这里需要使用命令npm install -g appium-doctor,或者直接从源码位置打开)。
检查所有环境变量是否配置好

在DOS窗口下输入appium可以打开appium,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。

Appium测试Demo(java,推荐使用Python,Java的配置相当复杂,但是Java可供操作的选项多一点,一般情况下Python足够使用了,后面会补Python)

source code

首先需要创建一个Java Project,这里我用eclipse来作为我的IDE

创建一个新的Java项目
新建一个Java项目

然后新建两个文件夹appslib,(这里名字可以随便取,只是约定俗成后大家都这么写),如下图

新建的Java项目
我这里之所以有Referenced Libraries是因为我的lib下的jar包已经添加进引用了。新建的项目应该是没有的。

将需要测试的apk文件添加进apps文件夹,和需要用到的jar包添加进lib文件夹。

我这里提供两个apk,一个是官方提供的,一个是我自己写的
jar包则需要去官网下,这里的类库分为两种一种是Selenum2类库(需要其他版本则进这里),
下载Selenum jar包
另一种是 Appium类库
下载Appium jar包
下载完成后,将所有的jar包添加进我们的lib文件夹,并全部引用(添加进编译路径)。
note:注意的是selenum下载下来的压缩包,需要解压后,(需要注意的是,解压后应该是有一个jar文件和一个lib文件夹,jar文件和lib里面的所有jar包都添加进工程的lib文件夹,这里用到的jar包需要是同一压缩包下面的,不然版本号不匹配会报错);添加编译路径是可以选中所有的jar包然后一起右键添加的(右键-->Build Path-->Add to Build Path)。
添加jar包并添加引用和apk文件

新建一个Java文件,并编写测试代码

新建一个Java class,名字自己写,Java里面的代码如下,

package com.hust.damnicomniplus;

import java.io.File;
import java.net.URL;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.android.AndroidDriver;

public class AppiumTest {
    private AndroidDriver driver; 
    @Before
    public void setUp() throws Exception {
        //设置apk的路径
        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "apps");
        File app = new File(appDir, "ContactManager.apk");

        //设置自动化相关参数
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("deviceName", "Android Emulator");

        //设置安卓系统版本
        capabilities.setCapability("platformVersion", "4.4.2");
        //设置apk路径
        capabilities.setCapability("app", app.getAbsolutePath()); 

        //设置可支持编码,可直接输入中文
        capabilities.setCapability("unicodeKeyboard", true);
        capabilities.setCapability("resetKeyboard", true);
        //设置网络选项,可选项
        capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
        //设置app的主包名和主类名
        capabilities.setCapability("appPackage", "com.example.android.contactmanager");
        capabilities.setCapability("appActivity", ".ContactManager");

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

    @Test
    public void addContact(){
        WebElement el = driver.findElement(By.name("Add Contact"));
        el.click();
        List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
        textFieldsList.get(0).sendKeys("袁大毛");
        textFieldsList.get(1).sendKeys("15648971455");
        textFieldsList.get(2).sendKeys("kjgierhgi@jhig.com");
        driver.swipe(100, 500, 100, 100, 2);
        driver.findElementByName("Save").click();
    }    

    @After
    public void tearDown() throws Exception {
        driver.quit();
    }
}

运行项目之前需要先打开appium,这里在DOS窗口下输入appium或者直接在开始菜单里面运行appium,如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo里面选定)。(右上角的运行按钮
打开appium后并运行
之后运行项目,右键–>Run as Junit Test就行了。
运行完毕后
note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。这里不需要提前将测试的apk文件安装到手机

测试项目源码地址

Appium测试Demo(Python,2.7的版本也可以,我这里使用的3.5)

首先下载appium的依赖包

Dos窗口输入pip install appium-python-client,这个命令会下载四个依赖,分别是appium与Python交互配置的文件Appium_Python_Client-0.24-py3.5.egg-info、Python与appium通信的appium、真正参与测试的selenium、selenium的说明配置文件selenium-3.4.1.dist-info

DOS窗口下载依赖包

编写自己的测试代码

我这里代码如下

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from appium import webdriver

capabilities = {}
# 测试平台,与测试设备名字,由于这里是真机,所以设备名字不生效
capabilities['platformName'] = 'Android'
capabilities['deviceName'] = 'Android Emulator'
# 安卓测试版本,真机这里也不生效
capabilities['platformVersion'] = '4.4.2'
# 设置支持的编码,这样设置后可以输入中文
capabilities['unicodeKeyboard'] = 'True'
capabilities['resetKeyboard'] = 'True'
# 设置APP的主包名和入口类
capabilities['appPackage'] = 'com.example.android.contactmanager'
capabilities['appActivity'] = '.ContactManager'
# 初始化
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', capabilities)

add = driver.find_element_by_name('Add Contact')
add.click()
textFieldsList = driver.find_elements_by_class_name('android.widget.EditText')
textFieldsList[0].send_keys('袁大毛')
textFieldsList[1].send_keys('15684457157')
textFieldsList[2].send_keys('keingha@jig.com')
driver.swipe(100, 500, 100, 100, 2)
# driver.find_element_by_name('Save').click()
driver.quit()

开启Appium,并执行脚本语句

开启和上面Java一样,在DOS窗口直接输入appium后回车,或者在开始菜单里面找到appium打开,,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。
如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo里面选定)。(右上角的运行按钮
打开appium后并运行
然后运行Python脚本就行了。
note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。需要提前将测试的apk文件安装到手机

TIPS

  1. 这里测试的apk不一定是正式签名过得,debug版本的也行。
  2. 如果想测试其它非自己开发的apk,则可以借助Android SDK里面的uiautomatorviewer.bat工具。路径为SDK下面的tools文件夹下。
  3. 想学习更详细的appium测试,可以进testerhome
  4. appium官方也提供了相当多的文档
展开阅读全文

没有更多推荐了,返回首页