我正在使用Selenium TestNG自动化Salesforce应用程序。我正在使用apache PDFBox实现实用程序,在该实用程序中,我将所有屏幕截图粘贴到PDF中以使客户端满意。
我的逻辑是我使用1.png,2.png等方法在每种方法中创建屏幕截图,直到n.png为止,然后使用pdfbox方法将其粘贴到pdf中。
问题是我的屏幕截图数量是可变的,所以我实现了iTestContext,其中将变量计数器设置为最大数量,然后将它们传递给我的after方法,在这里我获取计数器,然后粘贴了这些屏幕截图的数量-像这样>
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文件中传递它并将其用于所有方法吗?
希望我提供了所有详细信息
答案 0 :(得分:0)
如果您需要掌握当前的 var emptyBins = dc.ExecuteQuery<BIN>(
@"SELECT BINS.BIN_NUMBER
FROM BINS LEFT JOIN
INVENTORY_ACTIVE ON BINS.BIN_NUMBER = INVENTORY_ACTIVE.BIN_NUMBER
WHERE (((BINS.BIN_TYPE)={0}) AND
((INVENTORY_ACTIVE.BIN_NUMBER) Is Null))
ORDER BY BINS.BIN_NUMBER;", "INVENTORY");
if (dc.DatabaseExists()) MainGrid.ItemsSource = emptyBins;
对象(代表正在执行的当前ITestContext
标签),则无需将其作为参数传递给{ {1}}方法。
您可以从<test>
带注释的测试方法中通过以下方式访问它:
@Test
这样,您无需将@Test
对象作为参数传递给org.testng.ITestContext context =
org.testng.Reporter.getCurrentTestResult().getTestContext();
方法。
我可以将其传递到xml文件中并用于所有方法吗?
否,您无法通过xml文件传递org.testng.ITestContext
对象。