我正在使用Selenium Testng自动化Salesforce应用程序。我正在使用Apache PDFBox实施实用程序,在其中将所有屏幕截图粘贴到PDF中以使客户端快乐。
我的逻辑是,我在每种方法中使用1.png,2.png等创建屏幕截图,直到N.PNG并使用PDFBox方法将它们粘贴到PDF中。
问题是我的屏幕截图数量是可变的,因此我实现了iTestContext,在其中设置了一个可变计数器到最大数字,将它们传递到我检索计数器的后方法,并且屏幕截图数量被粘贴了 - 类似于此
Class Login {
@Test
mymethod(ItestContext context){
commonfunctions.savescreenshot(1.png);
commonfunctions.savescreenshot(2.png);
commonfunctions.savescreenshot(n.png);
context.setAttribute("Counter", "n");
}
@AfterMethod
myaftermethod(){
String PATH = //Path of my test method
String MethodCounter = (String)context.getAttribute("Counter");
PDFUtility.addImagetoPDF(PATH,Integer.parseInt(MethodCounter) );
}
}
问题是我有很多我需要实现的方法,并且我不希望 ITestContext
侦听器作为参数作为每个方法。我可以通过xml文件传递并将其用于所有方法吗?
希望我提供了所有详细信息
如果您需要保留当前的ITestContext
对象(这是执行当前<test>
标签的表示),则无需将其作为参数传递给@Test
方法。
您可以在@Test
注释的测试方法中通过此类操作来访问它:
org.testng.ITestContext context =
org.testng.Reporter.getCurrentTestResult().getTestContext();
这样,您就不需要将org.testng.ITestContext
对象作为参数传递给@Test
方法。
我可以将其传递到XML文件中并将其用于所有方法?
否,您无法通过XML文件传递ITestContext
对象。