appium自动化测试的入门案例及环境搭建方法

一、下载所需工具及配置环境变量

1.下载并安装JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

配置java环境变量:

新建变量1:JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_91(此处路径为jdk安装路径)

新建变量2:CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(注意前面有一个点和分号)

在已有变量PATH后追加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

验证是否安装配置成功:cmd窗口输入java或javac


2.下载安装Android-SDK,下载地址:http://developer.android.com/sdk/index.html

配置环境变量:

新建变量:ANDROID_HOME=E:\Android\Android-SDK(到SDK的plateforms的上一级目录)

在已有变量PATH后追加:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;


3.下载并安装appium,请参照https://blog.csdn.net/dream_18/article/details/84993432进行安装


4.安装eclipse,下载地址:https://www.eclipse.org/downloads/


5.安装好eclipse后,在eclipse商店安装testNg(eclipse-->help-->Eclipse Markteplace,然后在搜索框搜索testNg,搜出来后,点击install安装)


6.安装maven(也可不安装,手动引入jar包,但笔者手动引入出了很多问题,因此建议使用maven)请参考这篇文章,较为详细https://www.cnblogs.com/dingguofeng/p/8671661.html


二、入门appium+java案例

1.电脑连接测试机(测试机需打开调试)

2.电脑cmd窗口输入adb devices查看测试机ID(下文正式测试中要用到)

3.在电脑cmd窗口输入ipconfig以查看电脑IP

4.打开appium,在地址中输入自己电脑的IP,启动

5.新建maven项目,在pom.xml中导入jar包,具体代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.qb.lxy</groupId>
  <artifactId>WeChatapp</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>WeChatapp</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
       <groupId>org.testng</groupId>
       <artifactId>testng</artifactId>
       <version>6.1.1</version>
       <scope>test</scope>
    </dependency>      

    <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>LATEST</version>
    </dependency>

    <dependency>
       <groupId>io.appium</groupId>
       <artifactId>java-client</artifactId>
       <version>2.1.0</version>
    </dependency>
    
  </dependencies>
</project>

6. 然后打开要测的app,输入

adb shell "dumpsys window w|grep \/|grep name=|sed 's/mSurface=Surface(name=//g'|sed 's/)//g'|sed 's/ //g'"

查看APP的包名与ActivityName(下文正式测试中要用到)

7.第一个测试用例啦,我做的是小米计算器的1+5=的简单测试

对了,忘记写获取页面元素的方式了,下次有时间再写吧,或参考https://www.cnblogs.com/krystal123/articles/6473161.html

最后附上我的测试代码:

package appiumDemo;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;

import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class First {

	private AndroidDriver driver;

	@BeforeClass
	public void setUp() throws Exception {

		DesiredCapabilities cap = new DesiredCapabilities();
		cap.setCapability(CapabilityType.BROWSER_NAME, "");
		cap.setCapability("platformName", "Android"); // 指定测试平台
		cap.setCapability("deviceName", "c353ce90"); // 指定测试机的ID,通过adb命令`adb devices`获取
		cap.setCapability("platformVersion", "7.1");
		cap.setCapability("noReset", true);
		// 将上面获取到的包名和Activity名设置为值
		cap.setCapability("appPackage", "com.miui.calculator");
		cap.setCapability("appActivity", "com.miui.calculator.cal.CalculatorActivity");

		// A new session could not be created的解决方法
		cap.setCapability("appWaitActivity", "com.miui.calculator.cal.CalculatorActivity");
		// 每次启动时覆盖session,否则第二次后运行会报错不能新建session
		cap.setCapability("sessionOverride", true);
		try {

			// 加载驱动,ip,填写相应的ip和端口 例如 http://172.16.11.120:4720
			driver = new AndroidDriver(new URL("http://169.254.82.105:4723/wd/hub"), cap);

		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Test
	public void Test() {
		// 获取1
		driver.findElementById("com.miui.calculator:id/btn_1_s").click();
		// 获取+
		driver.findElementById("com.miui.calculator:id/btn_plus_s").click();
		// 获取2
		driver.findElementById("com.miui.calculator:id/btn_5_s").click();
		// 获取=
		driver.findElementById("com.miui.calculator:id/btn_equal_s").click();
	}

	// 测试完成后,退出driver
	@AfterClass
	public void tearDown() throws Exception {
		driver.quit();
	}

}

猜你喜欢

转载自blog.csdn.net/dream_18/article/details/85051762