使用Appium+java搭建Android自动化测试环境

环境搭建

一.JDK下载安装及环境变量配置

1.进入下面的链接找到与你的电脑系统相对应得jdk版本,点击下载

jdk下载地址

2.安装JDK 选择安装目录 安装过程中会出现两次 安装提示 。第一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错)

 

3.接下来我们就来配置jdk的环境变量,一共分为三步
首先打开我的电脑右键属性,点击高级系统设置-环境变量-系统变量新建,创建新的系统环境变量

 

 

 

新建->变量名"JAVA_HOME",值"D:\JAVA\JDK\javaSE1.8\jdk1.8"(即JDK的安装路径)

 

编辑->变量名"Path",在原变量值后面加上下面的变量值, “;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin注意前面的分号

 

新建->变量名 “CLASSPATH”,值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar注意前面的逗号和分号,不要丢

 

配置好jdk之后,验证jdk是否配置正确,window+r打开运行,输入cmd打开控制台,在控制台分别输入java,javac,java -version 命令,出现如下所示的JDK的编译器信息,包括修改命令的语法和参数选项等信息。

 

那么恭喜你,jdk安装好了。

二.下载安装并配置AndroidSDK

首先下载 这里是SDK下载地址
点击进入之后点击AndroidSDK工具,选择SDKtools

 

在该页面选择与你电脑系统相应的版本下载。
选择zip的,解压缩至目标路径位置即可

 

点击SDKmanager,启动SDK Manager,桌面上会弹出一个框,提示你安装,tools勾选以下名称的工具选项,版本按需求选择.选择platform-tools安装后会有adb.exe工具,连模拟器会使用到.

 

API选择最新版本
Extras勾选下面的选项

 

接下来就是AndroidSDK的配置了

与配置jdk时一样,先打开环境变量,新建一个系统环境变量,

1.新建->变量名:ANDROID_HOME 变量值:为你的SDK安装路径(例如我的就是D:\JAVA\SDK\android-sdk_r24.4.1-windows\android-sdk-windows)

2.编辑->变量名:path

变量值:在原本的变量值后面追加 %ANDROID_HOME%\tools%ANDROID_HOME%\platform-tools

检验一下Android SDK是否安装成功:在命令行窗口中输入”adb version“,出现如下显示,则安装成功了

 

三.安装并配置appium

通过Appium官方网站上下载操作系统相应的Appium版本。

目前最新的是 https://bitbucket.org/appium/appium.app/downloads/

 

注意下载的是windows版本,如果你是mac系统,则需要下载mac版本的,点击适合自己操作系统的安装包进行安装,下载完成之后点击

 

 

四.安装雷电模拟器

 

 

五.检查设备状态

打开CMD命令窗口,用 adb devices 命令来查看是否可以检测到手机设备,如果如下图显示出设备,则证明我们可以对手机进行测试操作

记下设备名,测试代码要使用。

 

adb deviecs时显示的emulator-5554 offline如何解决

 

现象:用adbdevices命令总发现emualtor-5554offline,重新安装与adb相关的程序均无法消除此设备。

原因:有程序占用5555端口,导致adb认为5554不能作为第1个设备启用

方法:

1.     用netstat ano(即netstat -a –n –o),查看5555端口被哪个PID占用。

2.     打开任务管理器,选择“进程”,在“查看”菜单打开“选择列”,勾上PID。

3.     把进程按PID排序,找到PID对应的程序名。

4.     按文件名搜索程序所在的目录,确认后删除该程序。

5.     再运行adb devices,发现emualtor-555

 

 

六.获取指定APP的包名和Activity名

通过上一步操作,我已经看到我的设备是可以操作的了,那究竟应该如何让appium去自动找到指定的APP和指定的Activity呢?想要打开指定的App,需要知道App的包名,同样想要打开指定Activity也需要知道其名,如何获取?

 

1、问公司的开发人员,一定可靠。

 

2、通过命令获取: adb shell dumpsys window w |findstr \/ |findstr name= (这条命令的作用是,获取当前app和当前Activity的名字,我现在手机已经打开了计算器应用)如图:

包名和Activity的名获取啦!!!

 

 

七.获取需要操作的元素

接下来需要用 uiautomatorviewer 对测试app的元素(button、text Field)进行抓取,比如通过id、class和text等来确定具体的元素。 uiautomatorviewer是在android-sdk的一个工具,具体目录 \android-sdk-windows\tools\uiautomatorviewer.bat 。

 

 

八.创建java项目

我们已经获取到想要的元素,下一步就是用代码编写测试用例了,打开eclipse软件,创建一个java project ,导入依赖包,如图: 

Maven配置:

<dependency>

        <groupId>io.appium</groupId>

        <artifactId>java-client</artifactId>

        <version>6.1.0</version>

</dependency>

 

若报错: java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet(Ljava/util/Comparator;)Ljava/util/stream/Collector;

加入如下maven配置(没有则不加入):

<dependency>
    <
groupId>com.google.guava</groupId>
    <
artifactId>guava</artifactId>
    <
version>27.0-jre</version>
</
dependency>

 

测试代码:

package cn.channel.test;

 

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.android.AndroidDriver;

import java.net.MalformedURLException;

import java.net.URL;

import org.openqa.selenium.remote.DesiredCapabilities;

 

public class AppiumTest {

 

   

   

     //注意.必须先关闭应用,不能在应用打开的界面进行执行,否则会报错

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

          AppiumDriver  driver;

          DesiredCapabilities cap = new DesiredCapabilities();

            //cap.setCapability(CapabilityType.BROWSER_NAME, ""); //这一句不能加,会报错

            cap.setCapability("platformName", "Android"); //指定测试平台

            cap.setCapability("deviceName", "emulator-5554"); //指定测试机的ID,通过adb命令`adb devices`获取

            cap.setCapability("platformVersion", "5.1");

 

            //将上面获取到的包名和Activity名设置为值

            cap.setCapability("appPackage", "com.ibox.calculators");

            cap.setCapability("appActivity", "com.ibox.calculators.CalculatorActivity");

 

            //A new session could not be created的解决方法

            cap.setCapability("appWaitActivity","com.ibox.calculators.CalculatorActivity");

            //每次启动时覆盖session,否则第二次后运行会报错不能新建session

            cap.setCapability("sessionOverride", true);

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

           

            //获取1

              driver.findElementById("com.ibox.calculators:id/digit7").click();

              //获取+

              driver.findElementById("com.ibox.calculators:id/plus").click();

              //获取2

              driver.findElementById("com.ibox.calculators:id/digit6").click();

              //获取=

              driver.findElementById("com.ibox.calculators:id/equal").click();

              driver.quit();

    }

 

}

 

启动appium,模拟器中先关闭计算器,否则报错,运行测试类 

 

大功告成 
可以查看appium控制台日志,也可以看到,手机端的计算器app,也会自动出现1+2 = 3的自动化输入测试

 

成功!!!!!!!!!!

 

九.adb不匹配

报错如下:

adb server version (31) doesn't match this client (41); killing...

 

原因:

使用如下下载的adb版本与雷电模拟器中adb版本不一致

 

解决办法:

将下载的adb.exe文件拷贝至模拟器的安装目录下进行替换即可.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中国首席搬砖师vip

做最详细的原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值