java - Selenium:如何从另一个类调用方法(截图)

标签 java selenium testng

我有一个具有以下结构的测试类(使用 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() 函数放入在那里并像 .tearDown() 中的 Utils.screenshot() 一样调用它。

关于java - Selenium:如何从另一个类调用方法(截图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41002113/

相关文章:

testng - 我可以在一个 TestNG 案例中多次使用 @BeforeClass 吗?

java - libGDX:创建工具栏

Java Selenium Webdriver 连接被拒绝

python - 使用 Selenium Python 在同一选项卡中一一打开多个 URL

java - Selenium - Maven/TestNG : How to add "testng.xml" and log4j2. pom.xml 中的 xml 路径,因此可执行的 .jar 文件也可以在其他计算机上执行?

java - maven clean 和 eclipse clean 的区别

java - 创建Android Activity类的对象

java - 我应该先关闭哪个,PreparedStatement 还是 Connection?

java - 跨多个类传递参数

javascript - 如何通过selenium获取ExtJS combobox的选中值?