环境搭建
一.JDK下载安装及环境变量配置
1.进入下面的链接找到与你的电脑系统相对应得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文件拷贝至模拟器的安装目录下进行替换即可.