android+apk自动化测试,APPIUM+JAVA实现对安卓APK的自动化测试----第十三篇【JUNIT框架】...

好吧~终于要讲框架了,首先我们先来个懒汉的方法,就是借用JUNIT框架来实现运行,作者用下来发现JUNIT对APPIUM的支持并不十分友善,但是用来教学到时很合适,来吧,作者开始气定神闲+豪火球了。

import io.appium.java_client.android.AndroidDriver;

import java.io.File;

import java.net.URL;

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.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

import com.ciic.mywheel.stdoutput.StdOutput;

import com.ciic.mywheel.waituntil.WaitUntilFindElementById;

import com.ciic.mywheel.waituntil.WaitUntilFindElementByName;

public class TestCase_One {

public static AndroidDriver> driver;

// 配置内容

private static String apkName = "weixin.apk";

private static String platformVersion = "4.4.2";

private static String serverURL = "http://127.0.0.1:4723/wd/hub";

//before 就是用例开始前的准备工作==========================================

@Before

public void setUp() throws Exception {

File classpathRoot = new File(System.getProperty("user.dir"));

File appDir = new File(classpathRoot, "apps");

File app = new File(appDir, apkName);

new DesiredCapabilities();

DesiredCapabilities capabilities = DesiredCapabilities.android();

capabilities.setCapability("unicodeKeyboard", "True");

capabilities.setCapability("resetKeyboard", "True");

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

capabilities.setCapability("platformName", "Android");

capabilities.setCapability("deviceName", "Android Emulator");

capabilities.setCapability("platformVersion", platformVersion);

capabilities.setCapability("app", app.getAbsolutePath());

//核心关键步骤

driver = new AndroidDriver(new URL(serverURL),

capabilities);

// LOG记录

StdOutput.print("【Appium驱动】初始化成功");

}

//test就是用例的主题部分=================================================

@Test

public void testSubstract() {

try {

WaitUntilFindElementByName waitUnitlByName = new WaitUntilFindElementByName();

// 登录界面

waitUnitlByName.waitUntilInit(driver, "登录", 30);

waitUnitlByName.waitUntilLoading();

driver.findElement(By.name("登录")).click();

// 使用其他登录方式

waitUnitlByName.waitUntilInit(driver, "使用其他方式登录", 30);

waitUnitlByName.waitUntilLoading();

driver.findElement(By.name("使用其他方式登录")).click();

// QQ号登录

waitUnitlByName.waitUntilInit(driver, "QQ号/微信号/Email", 30);

waitUnitlByName.waitUntilLoading();

driver.findElementByName("QQ号/微信号/Email").sendKeys("353732443");

Thread.sleep(1000);

driver.findElementByXPath( "//android.widget.LinearLayout[@resource-id='com.tencent.mm:id/alr']/android.widget.EditText") .sendKeys("kfjghfjruhghdd");

Thread.sleep(1000);

driver.findElementByName("登录").click();

// WAITUNTIL对象

WaitUntilFindElementById waitUnitlById = new WaitUntilFindElementById( driver, "com.tencent.mm:id/bmm", 30);

waitUnitlById.waitUntilLoading();

driver.findElementById("com.tencent.mm:id/bmm").click();

//=========================================================

// 进入微信

Thread.sleep(10000);

//=========================================================

driver.swipe(800, 900, 100, 900, 2000);

Thread.sleep(2000);

driver.findElementByName("公众号").click();

Thread.sleep(2000);

driver.tap(1, 865, 1216, 500);

Thread.sleep(2000);

driver.findElementByName("微信测试号").click();

// 进入微信公众号项目首页

// WAITUNTIL对象

waitUnitlByName.waitUntilInit(driver, "测试之路", 30);

waitUnitlByName.waitUntilLoading();

driver.findElementByName("测试之路").click();

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

}

//after为用例的结束收尾工作==========================================

@After

public void tearDown() throws Exception {

driver.quit();

}

}

写好这样的用例之后,右击运行选择【JUNIT测试】运行就可以了。有几条就写几条。

不过作者在使用JUNIT4的时候发现,JUNIT4对APPIUM的支持不是很好,驱动有时候老是启动不起来,而且JUNIT4对排序做的并不十分友善,如果不使用SUIT容器来排序,JUINT4是无序运行的,但是用了SUIT容器则一个用例失败后,后续的用例就都全部失败了,在这里作者也老实交代,对JUNIT4了解的也不多,如果有大神可以解惑的,也请教导一下小弟。

以上代码作者已经对部分appium的函数做了封装,所以大家只要看个格式和思路就可以了,由于JUNIT4的各种奇怪问题,在后面作者将分享自己的构思给大家,客观不要着急,先休息休息一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值