配置引用testng框架,添加断言,运行成功后的脚本

1.引入testNG

在mavenrepository(https://mvnrepository.com/artifact/org.testng/testng/6.14.3)搜索testNG,复制到pom文件

eclipse安装testng:https://www.cnblogs.com/yigedapangzhi/p/10203981.html

 以上在线安装testng方法我都尝试了没有成功,所以尝试了下载testng,离线安装

我按照这个尝试成功了:https://blog.csdn.net/saifei1125/article/details/99633556?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

这里下载http://dl.bintray.com/testng-team/testng-eclipse-release/zipped/7.0.0.201908240652/,然后eclpise-》help->add new software

终于成功安装testNG,我怀疑我下载的ecplise是阉割版的。。。。。

目前有的版本testng内置,不需要安装。。。

右击-》testNG->convert to testng

 finish后生成一个testng文件

修改了部门脚本,run as testNG

package com.test.firstAppium;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
public class AppiumTest001 {
 // 声明全局变量
 public static AndroidDriver<WebElement> androidDriver;
 
 @BeforeTest
 public void setup() throws MalformedURLException {
  // 1.創建配置對象
  DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
  // 2.添加配置
  // deviceName:可以找到我们测试的设备
  desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");
  // platformName:测试平台android or IOS
  desiredCapabilities.setCapability("platformName", "Android");
  // appPackage:找到测试 APP:aapt dump badging.....
  desiredCapabilities.setCapability("appPackage", "com.handsgo.jiakao.android");
  // automationName:uiautomator2来解决输入框输入不了数据
  // 自动化引擎
  // desiredCapabilities.setCapability("automationName", "uiautomator2");
  // appActivity:测试app入口
  desiredCapabilities.setCapability("appActivity", "com.handsgo.jiakao.android.splash.Login");
  // 创建驱动
  // 传入2个参数,第一个参数:Appium通讯地址,第二个参数:配置对象
  androidDriver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
 }
 // 自定义方法
 @Test
 public void testJiakao() throws InterruptedException {
  Thread.sleep(20000);
  // 选择同意
  // 1.找到定位城市文本,并且点击
  androidDriver.findElementById("com.handsgo.jiakao.android:id/cityTv").click();
  // 2.输入城市:上海
  // androidDriver.findElementById("com.handsgo.jiakao.android:id/edt_search_q").sendKeys("上海");
  // 3.输入框无法识别
  androidDriver.findElementByXPath("//android.widget.TextView[@text='北京']").click();
  // .findElementByXPath("//android.widget.TextView[@text='上海']").click();
  // 4.选择性别
  androidDriver.findElementById("com.handsgo.jiakao.android:id/femaleTv").click();
  // 5.选择驾校包名状态-未报名
  androidDriver.findElementById("com.handsgo.jiakao.android:id/unRegisterTv").click();
  // 6.选择当前类型:小车
  androidDriver.findElementById("com.handsgo.jiakao.android:id/itemCar").click();
  // 7.点击下一步
  androidDriver.findElementById("com.handsgo.jiakao.android:id/okBtn").click();
 }
 @AfterTest
 public void teardown() {
  androidDriver.quit();
}
}
 
运行的时候,打开appium,模拟器,cmd->adb devices,cmd->adb connect 127.0.0.1:62001

自动化测试不添加断言的脚本是没有灵魂的

下面来添加断言

对如下的页面添加断言

对于app来说每一个页面都一个appActivity,通过找到此页面appActivity去设置断言

cmd->C:Usersliuwe>adb shell dumpsys activity | find "mFocusedActivity"

上面这个命令是查找当前页面运行的package

/后面的是类名: .main.activity.MainActivity

 测试结果

添加断言后的脚本

package com.test.firstAppium;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
public class AppiumTest001 {
 // 声明全局变量
 public static AndroidDriver<WebElement> androidDriver;
 
 @BeforeTest
 public void setup() throws MalformedURLException {
  // 1.創建配置對象
  DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
  // 2.添加配置
  // deviceName:可以找到我们测试的设备
  desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");
  // platformName:测试平台android or IOS
  desiredCapabilities.setCapability("platformName", "Android");
  // appPackage:找到测试 APP:aapt dump badging.....
  desiredCapabilities.setCapability("appPackage", "com.handsgo.jiakao.android");
  // automationName:uiautomator2来解决输入框输入不了数据
  // 自动化引擎
  // desiredCapabilities.setCapability("automationName", "uiautomator2");
  // appActivity:测试app入口
  desiredCapabilities.setCapability("appActivity", "com.handsgo.jiakao.android.splash.Login");
  // 创建驱动
  // 传入2个参数,第一个参数:Appium通讯地址,第二个参数:配置对象
  androidDriver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
 }
 // 自定义方法
 @Test
 public void testJiakao() throws InterruptedException {
  Thread.sleep(20000);
  // 选择同意
  // 1.找到定位城市文本,并且点击
  androidDriver.findElementById("com.handsgo.jiakao.android:id/cityTv").click();
  // 2.输入城市:上海
  // androidDriver.findElementById("com.handsgo.jiakao.android:id/edt_search_q").sendKeys("上海");
  // 3.输入框无法识别
  androidDriver.findElementByXPath("//android.widget.TextView[@text='北京']").click();
  // .findElementByXPath("//android.widget.TextView[@text='上海']").click();
  // 4.选择性别
  androidDriver.findElementById("com.handsgo.jiakao.android:id/femaleTv").click();
  // 5.选择驾校包名状态-未报名
  androidDriver.findElementById("com.handsgo.jiakao.android:id/unRegisterTv").click();
  // 6.选择当前类型:小车
  androidDriver.findElementById("com.handsgo.jiakao.android:id/itemCar").click();
  // 7.点击下一步
  androidDriver.findElementById("com.handsgo.jiakao.android:id/okBtn").click();
  Thread.sleep(4000);
  //8.断言
  String expected = ".main.activity.MainActivity";
  String actual= androidDriver.currentActivity();
  Assert.assertEquals(actual, expected);
    
 }
 
 @AfterTest
 public void teardown() {
  androidDriver.quit();
}
}
 
原文地址:https://www.cnblogs.com/JacquelineQA/p/12439187.html