zoukankan      html  css  js  c++  java
  • 配置引用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();
    }
    }
     
  • 相关阅读:
    linux下的第一个C程序及其编译方法
    使用open_read_write等底层函数来赋值一个文件
    C++中预定义的宏
    altibase MDB的创建sequence的举例
    C中的时间函数的用法
    联系表单 1
    《jQuery基础教程》读书笔记
    《jQuery基础教程》读书笔记
    《jQuery基础教程》读书笔记
    『原创·翻译』如何阅读论文
  • 原文地址:https://www.cnblogs.com/JacquelineQA/p/12439187.html
Copyright © 2011-2022 走看看