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、
然后去xml里面配置reportng
<!--配置reportng-->
<listeners>
<listener class-name="org.uncommons.reportng.HTMLReporter" />
<listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
</listeners>