testng_reportng

@BeforeMethod进行druiver对象的初始化工作;@Test进行搜索关键字的测试;

@DataProvider进行参数化数据驱动;@AfterMethod进行driver的清理工作;

为什么用BeforeMethod而不用BeforeClass,针对方法进行的操作,每调用一次方法执行一次申请和注销操作;

MiSearch.java-----

package com.snail.testng;

import org.testng.annotations.Test;

import io.appium.java_client.AppiumDriver;

import org.testng.annotations.BeforeMethod;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.DataProvider;

import org.testng.Assert;
import org.testng.Reporter;

public class MiSearch {
    //定义一个driver
    private static AppiumDriver driver;
  @Test(dataProvider = "searchParameters")
  public void search(String s) throws InterruptedException{
      System.out.println("MiSearch方法主体");
    //--------------下面是实现页面的业务操作
      //点击首页的跳过按钮
      driver.findElementById("com.xiaomi.shop:id/skip").click();
      //点击搜索按钮
      //driver.findElementById("com.xiaomi.shop.plugin.homepage:id/fragment_search_swither").click();
      driver.findElementByXPath("//android.widget.TextSwitcher/parent::*/parent::*[@resource-id='com.xiaomi.shop.plugin.homepage:id/fragment_search_view']").click();
      //跳转页面后点击搜索按钮
      driver.findElementById("com.xiaomi.shop2.plugin.search:id/input").sendKeys(s);
      Reporter.log("搜索关键字:"+s);
      //点击搜索按钮
      //driver.findElementById("com.xiaomi.shop2.plugin.search:id/search_fragment_search_btn").click();
      driver.findElementByAndroidUIAutomator("text(\"搜索\")").click();
      Reporter.log("搜索完成");
      Thread.sleep(1000);

  }
  @BeforeMethod
  public void beforeMethod() throws MalformedURLException{
      System.out.println("beforeMethod");
    //new 一个app对象
            DesiredCapabilities capabilities = new DesiredCapabilities();  
            //对象调用方法
          capabilities.setCapability(CapabilityType.BROWSER_NAME, "");  
          //平台
          capabilities.setCapability("platformName", "Android");  
          //模拟器的名称
          capabilities.setCapability("deviceName","Android Emulator"); 
          //平台手机的android系统版本一致
          capabilities.setCapability("platformVersion", "4.4.4");  
          
          //包名
          capabilities.setCapability("appPackage", "com.xiaomi.shop");  
          //主入口activity名
          capabilities.setCapability("appActivity", "com.xiaomi.shop.activity.MainTabActivity");  
          
          //不重置数据,如果需要重置的话注释掉这句
          capabilities.setCapability("noReset", true);
          //隐藏手机中的软键盘,让手机中可以输入中文
          capabilities.setCapability("unicodeKeyboard",true);
          capabilities.setCapability("resetKeyboard",true);
        //生成一个driver对象
          driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);  
          //停顿时间
          driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
  }

  @AfterMethod
  public void afterMethod() {
      System.out.println("afterMethod");
    //停顿时间
      driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);  
          //关闭app
      driver.quit();
  }


  @DataProvider
  public Object[][] searchParameters() {
    return new Object[][] {
      new Object[] { "U盘" },
      new Object[] { "电视" },
    };
  }
}
--------------------------------

testng_miSearch.xml------

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<!--配置reportng-->
<listeners>
    <listener class-name="org.uncommons.reportng.HTMLReporter" />
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>

  <test name="Appium自动化演示demo 群测">
    <classes>
      <class name="com.snail.testng.MiSearch"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
---------------------------------------------------------------------------------------------------------------------------------------

1、将reportng下的三个jia包reportng-1.1.4.jar、testng-6.8-nobsh-guice.jar、velocity-dep-1.4.jar放入到Lib文件夹

右键-》build path-》add to build path

2、

testng_reportng

testng_reportng

然后去xml里面配置reportng

<!--配置reportng-->
<listeners>
    <listener class-name="org.uncommons.reportng.HTMLReporter" />
    <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>