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
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 static AndroidDriver<WebElement> androidDriver;
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);
// 选择同意
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();
}
自动化测试不添加断言的脚本是没有灵魂的
下面来添加断言
对如下的页面添加断言
对于app来说每一个页面都一个appActivity,通过找到此页面appActivity去设置断言
cmd->C:Usersliuwe>adb shell dumpsys activity | find "mFocusedActivity"
上面这个命令是查找当前页面运行的package
/后面的是类名: .main.activity.MainActivity
测试结果
添加断言后的脚本
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 static AndroidDriver<WebElement> androidDriver;
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);
// 选择同意
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();
}