![](/img/trans.png)
[英]How to call java method taking parameter as List<Class<?>> from Scala
[英]Selenium: how to call method (taking screenshot) from another class
我有一个带有以下结构的测试类(使用Selenium,TestNG,JAVA):
public class loggedTest {
@Test
@Test
@AfterMethod
public void tearDown(messages screen, ITestResult result) {
screen.screenshot(result);
}
在AfterMethod中,我想在测试失败时制作屏幕截图。 以下是在单独的类中进行屏幕截图的方法:
public class messages {
public void screenshot(ITestResult result) {
//driver = new ChromeDriver();
if (ITestResult.FAILURE == result.getStatus()) {
try {
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
Date date = new Date();
FileUtils.copyFile(source, new File("./Screenshots/" + result.getInstanceName() + "." + result.getName() + "." + date + ".png"));
System.out.println("Screenshot taken");
} catch (Exception e) {
System.out.println("Exception while taking screenshot " + e.getMessage());
}
}
}
}
我正在运行测试,但如果此方法在其他类中,则它不起作用 。
但它工作 ,如果我把它直接进入@AfterMethod注释,这样的:
@AfterMethod
public void tearDown(ITestResult result) {
if (ITestResult.FAILURE == result.getStatus()) {
try {
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
Date date = new Date();
FileUtils.copyFile(source, new File("./Screenshots/" + result.getInstanceName() + "." + result.getName() + "." + date + ".png"));
System.out.println("Screenshot taken");
} catch (Exception e) {
System.out.println("Exception while taking screenshot " + e.getMessage());
}
}
}
这里的问题在哪里? 谢谢
为什么.screenshot()
函数在一个名为messages
的类中? 它似乎不属于那里或者应该重命名messages
。
解决这个问题的一种方法是创建一个Utils
类,使其成为static
,然后将.screenshot()
函数放在那里,并像Utils.screenshot()
的.tearDown()
一样调用它。
一些事情 -
改进编写类名
loggedTest
- > LoggedTest
messages
- > Messages
(参见herafter)
你不需要将Messages
的实例传递给tearDown()
,而是调用screenshot
方法 -
@AfterMethod public void tearDown(ITestResult result) { new Messages().screenshot(result); }
Messages
类了解现有的driver
。 除非你最终创造一个新的驱动程序和做事荒谬。 建议 - 你可以在静态上下文中传递driver
的实例,或者在那里使用超类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.