我是Selenium
的新手,并编写了以下代码以从ITestContext
组中获取参数。
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.ITestContext;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class ITestGroupism {
WebDriver driver;
@BeforeTest(groups={"A","B"})
public void setup()
{
System.setProperty("webdriver.chrome.driver", "E:\\Automation Jars\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.google.co.in");
}
@Test(dataProvider="SearchProvider", groups="A")
public void testMethodA(String author, String searchKey) throws InterruptedException
{
WebElement searchText = driver.findElement(By.id("sb_ifc0"));
Actions actions = new Actions(driver);
actions.moveToElement(searchText);
actions.click();
actions.sendKeys(searchKey);
actions.build().perform();
System.out.println("Welcome ->"+author+" Your search key is "+searchKey);
driver.navigate().back();
driver.navigate().forward();
System.out.println("thread will sleep now");
Thread.sleep(2000);
}
@Test(dataProvider="SearchProvider", groups="B")
public void testMethodB(String searchKey) throws InterruptedException
{
WebElement searchText = driver.findElement(By.id("sb_ifc0"));
Actions actions = new Actions(driver);
actions.moveToElement(searchText);
actions.click();
actions.sendKeys(searchKey);
actions.build().perform();
//searchText.sendKeys(searchKey);
System.out.println("Welcome Professor"+"Your search key is "+searchKey);
driver.navigate().back();
driver.navigate().forward();
System.out.println("thread will sleep now");
Thread.sleep(2000);
}
@DataProvider(name="SearchProvider")
public Object[][] ff(ITestContext c)
{
Object[][] groupArray =null;
for(String group : c.getIncludedGroups())
{
if(group.equalsIgnoreCase("A"))
{
groupArray = new Object[][]
{
{"Aakash", "India"},
{"Aayush", "US"},
{"Raveena", "UK"}
};
break;
}else if(group.equalsIgnoreCase("B"))
{
groupArray= new Object[][]
{
{"Canada"},
{"New Zealand"},
{"Russia"}
};
}break;
}
return groupArray;
}
}
跳过:testMethodA java.lang.NullPoInterException(位于org.testng.internal.methodInvocationHelper.InvokedDataProvider(MethodInvocationHelper.java:151)(位于org.testng.internal.parameters.handleParameters(Parameters.java:430)(位于org.testng.internal.invoker.handleParameters(Invoker.java:1243)(位于org.testng.internal.invoker.createParameters(Invoker.java:992)Uiterunnerworker.run(suiterunnerworker.java:86)在org.testng.testng.runsuites(testng.java:1225)在org.testng.testng.runsuites(testng.java:1150)在org.testng.testng.runsuites(testng.java:1075)在org.testng.testng.run(testng.java:1047)在org.testng.remote.abstractremotetestng.run(
跳过:testMethodB java.lang.NullPointerException位于....
在使用组时,需要在XML文件中定义这些组。
<suite name="Group Suite" verbose="1">
<test name="Test">
<groups>
<run>
<include name="A" />
<include name="B" />
</run>
</groups>
<classes>
<class name="fully.qualied.package.ITestGroupism" />
</classes>
</test>
</suite>
更新的代码:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
public class ITestGroupism {
WebDriver driver;
@BeforeTest(groups = {"A", "B"})
public void setup() {
System.setProperty("webdriver.chrome.driver", new File("src/test/resources/driver/chromedriver")
.getAbsolutePath());
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://www.google.co.in");
}
@Test(dataProvider = "SearchProvider", alwaysRun = true, groups = "A")
public void testMethodA(String author, String searchKey) throws InterruptedException {
WebElement searchText = driver.findElement(By.id("sb_ifc0"));
Actions actions = new Actions(driver);
actions.moveToElement(searchText);
actions.click();
actions.sendKeys(searchKey);
actions.build().perform();
System.out.println("Welcome ->" + author + " Your search key is " + searchKey);
driver.navigate().back();
driver.navigate().forward();
System.out.println("thread will sleep now");
Thread.sleep(2000);
}
@Test(dataProvider = "SearchProvider", alwaysRun = true, groups = "A")
public void testMethodB(String searchKey) throws InterruptedException {
WebElement searchText = driver.findElement(By.id("sb_ifc0"));
Actions actions = new Actions(driver);
actions.moveToElement(searchText);
actions.click();
actions.sendKeys(searchKey);
actions.build().perform();
//searchText.sendKeys(searchKey);
System.out.println("Welcome Professor" + "Your search key is " + searchKey);
driver.navigate().back();
driver.navigate().forward();
System.out.println("thread will sleep now");
Thread.sleep(2000);
}
@DataProvider(name = "SearchProvider")
public Object[][] ff(Method method) {
Object[][] groupArray = null;
if (method.getName().equalsIgnoreCase("testMethodA")) {
groupArray = new Object[][]
{
{"Aakash", "India"},
{"Aayush", "US"},
{"Raveena", "UK"}
};
} else if (method.getName().equalsIgnoreCase("testMethodB")) {
groupArray = new Object[][]
{
{"Canada"},
{"New Zealand"},
{"Russia"}
};
}
return groupArray;
}
}
我在一个公共类中有以下构造函数: 和变量在类中定义,该类对其进行了扩展。 当使用执行它时,我会得到以下错误消息。 将其设置为静态的,或者向类中添加一个无参数的构造函数 抛出com.hp.lft.sdk.GeneralleanFTException,java.lang.InterruptedException:将其设置为静态,或者在org.testng.internal.utils.CheckIns
问题内容: 我想得到调用方法。 不是 方法的名称。 这是一个如何获取调用方类的示例。 仅用于测试目的! 问题答案: 如果仅用于测试,则可能有效。它假定可以通过调用类的类访问类文件,并且类文件已使用调试符号进行编译(我希望它们用于测试!)。此代码依赖于ASM字节码库。
问题内容: Python:如何在被调用方法中获取调用者的方法名称? 假设我有2种方法: 如果我不想对method1进行任何更改,如何在method2中获取调用者的名称(在本示例中,名称为method1)? 问题答案: inspect.getframeinfo和其他相关功能可以帮助: 该自省旨在帮助调试和开发;建议不要将其用于生产功能。
问题内容: Python:如何在被调用方法中获取调用者的方法名称? 假设我有2种方法: 如果我不想对method1进行任何更改,如何在method2中获取调用方的名称(在本示例中,名称为method1)? 问题答案: 和其他相关功能可以帮助: 该自省旨在帮助调试和开发;建议不要出于生产功能目的而依赖它。
本文向大家介绍ASP.NET中实现获取调用方法名,包括了ASP.NET中实现获取调用方法名的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ASP.NET中实现获取调用方法名的技巧。分享给大家供大家参考。具体实现方法如下: 在写记录日志功能时,需要记录日志调用方所在的模块名、命名空间名、类名以及方法名,想到使用的是反射(涉及到反射请注意性能),但具体是哪一块儿还不了解,于是搜索,整理如下:
从逻辑上讲,调用< code>wait方法的线程应该已经获得了正在调用< code>wait的对象的固有锁。 oracle教程中提到“在对象的同步方法中调用< code>wait是获取内部锁的一种简单方法”,这意味着至少还有另一种方法可以获取锁。 我的问题是,为了调用< code>wait,除了在synchronized方法内部调用< code>wait之外,还有其他方法可以获取内部锁吗?...它