加载了google主页。 (Google.co.in)
Sheet 1 Master sheet : Tc_Name & Executable are columns
Tc_Name Executable
Row 1 : Test1 No
Row 2 : Test2 Yes
Sheet 2 Test_Case script Sheet:Main_TC_Name & Action_search_Text are columns
Main_TC_Name(Should be same as TC_Name of sheet 1) Action_search_Text
Row 1 : Test1 you
Row 2 : Test1 gmail
Row 3 : Test2 images
Sheet 3: xpath sheet : Name & xpath Name are columns
Name (should be same as Action_search_Text ) xpath Name
Row 1: you //*[@id="gb"]/div[1]/div[1]/div[1]/div[1]/a
Row 2 : gmail //*[@id="gb"]/div[1]/div[1]/div[1]/div[2]/a
Row 3 : images //*[@id="gb"]/div[1]/div[1]/div[1]/div[3]/a
1)只应检索表1中“可执行文件”列下的“是”中的“是”。转到第2页找到相同的测试用例名称&从表3&中检索那个xpath。然后在前端执行。
例如: 表1:选择Test2作为其标记在Yes ----然后转到表2 ----搜索表2中的Test2实例 - 你将获得Row 3 ie images ----然后转到表3获取那个xpath ---把它放在前端。
一旦在前端检索到,我想执行Click
答案 0 :(得分:0)
您可以使用@DataProvider
注释并定义测试所需的工作表。
您必须创建DataProvider类,命名数据提供者并在测试类中使用注释@Test
。
示例:
@Test(testName = "test", dataProviderClass = ReturnExcelSheetData.class, dataProvider = "dataP") //dataProviderClass is optional
也许这不是您问题的直接答案,但我强烈建议您使用注释。它为您提供控制,您运行的测试,以什么顺序运行,您可以调整@DataProvider为3种不同的测试选择3种不同的Excel或表。
更直接的答案是:
创建一个@Test
,设置@DataProvider
。如果data = yes,则运行METHOD 1(不测试)// example
有关TestNG的更多信息:http://testng.org/doc/documentation-main.html
编辑:
TEST CLASS:
public class StackOverflow extends Ustawienia {
Logowanie page; //new constructor for login page
@Test(testName = "test", description = "", enabled = true, dataProviderClass = StackDataProvider, dataProvider = "excel")
public void Testing(login, password) throws Exception {
driver.get("some random page");
page = new Logowanie(driver, writer);
page.methodFromLogowanieClass();
TestNG使用像@Test
这样的注释来读取代码。例如,您可以使用@BeforeClass
和@AfterClass
来设置在运行正确测试之前必须执行的程序,以及在此测试之后要执行的操作(例如 - 创建干净数据)
@DataProvider
允许您使用xls或csv。
DATA PROVIDER CLASS(仅举例):
@DataProvider(name = "excel")
public static Object[][] returnExcelSheetData(Method method)
throws BiffException, IOException
{
String absolutePath = filePath.concat("/").concat(fileName);
FileInputStream file = new FileInputStream(new File(absolutePath));
Workbook workbook = Workbook.getWorkbook(file);
Sheet worksheet = workbook.getSheet(sheetName);
int ROWS = worksheet.getRows() - 1;
int COLS = worksheet.getColumns();
Object[][] dataset = new Object[ROWS][COLS];
for (int rowCount = 0; rowCount < ROWS; rowCount++) {
for (int colCount = 0; colCount < COLS; colCount++) {
dataset[rowCount][colCount] = worksheet.getCell(colCount,
rowCount + 1).getContents();
}
}
workbook.close();
file.close();
return dataset;
迭代excel表并返回数据。如果您将列login
和password
作为标题 - 它会很好用。下一行(2)将从具有特定@DataProvider
的{{1}}到@Test
读取。
这是我的@DataProvider,我还使用了一个接口来获取数据,因此它可能对你不起作用。您可以找到大量的dataProvider示例,这些示例遍历excel。
我希望它有所帮助,我会为下一个问题寻找帮助。