当前位置: 首页 > 知识库问答 >
问题:

获取screenshotSession ID为空时发生异常。调用quit()后使用WebDriver?(TestNG)

吴凯泽
2023-03-14

我得到会话ID为空。调用quit()后使用WebDriver?当任何测试用例的runmode设置为no时发生异常。我使用的是TestNg框架。

如果所有测试用例的Runmode都是Yes,那么它工作正常。

我为套件创建了一个Java类,并为单个测试用例创建了多个内部类。

    package com.smoke;

    import org.testng.SkipException;
    import org.testng.annotations.BeforeMethod;
    import org.testng.annotations.BeforeTest;
    import org.testng.annotations.Listeners;
    import org.testng.annotations.Test;
    import com.util.TestUtil;

    @Listeners(com.listener.ListenerTestNG.class)

    public class Testxls extends TestSuiteBase {    
        @BeforeMethod
        public void checkTestSkip() {    
        APP_LOGS.debug("Checking Runmode of Testxls Test Case");    
      if(!TestUtil.isTestCaseRunnable(smoke,this.getClass().getSimpleName())) {
      APP_LOGS.debug("Skipping Test Case" + this.getClass().getSimpleName() + " as runmode set to NO");
      throw new  SkipException("Skipping Test Case as runmode is set to NO");
  }
        }
        @BeforeTest
        public void testData() {
            try {
                objData=smoke.getTestCaseData("DataSheet", "Testxls");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(objData);

        }
        @Test()
        public void f() throws Exception {
            openBrowser();//Calling method to open browser
            Thread.sleep(5000);
            tearDown(); //calling method to quit browser

        }
    }

@Listeners(com.listener.ListenerTestNG.class)
class Testxls1 extends TestSuiteBase {

    @BeforeMethod
    void checkTestSkip()    {
        System.out.println(this.getClass().getSimpleName());
        APP_LOGS.debug("Checking Runmode of Testxls1 Test Case");
        if(!TestUtil.isTestCaseRunnable(smoke, this.getClass().getSimpleName())) {
            APP_LOGS.debug("Skipping Test Case" + this.getClass().getSimpleName() + " as runmode set to NO");
            throw new  SkipException("Skipping Test Case as runmode is set to NO");
        }
    }
    @BeforeTest
    void testData() {
        try {
            objData=suite_smoke.getTestCaseData("DataSheet", "Testxls1");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(objData);

    }
    @Test()
    void f() throws Exception {
        openBrowser();


    }
}

共有1个答案

巩镜
2023-03-14

TestSuiteBase中实现了什么?很可能您在所有测试中都在同一个驱动程序实例中使用,所以在一个测试中退出时获得异常,而在另一个测试中仍在使用。检查是否使用静态WebDriver。

更好的方法是创建方法,根据您的浏览器需求返回webdriver实例,并在测试开始时获得它,传递给该测试中的所有方法,最后退出。

 类似资料:
  • 我正在尝试使用Cucumber/Java编写一些selenium自动化UI测试。如果我的功能文件中只有一个测试,则一切正常。但是如果我添加第二个测试,我会在<code>driver.get()上得到这个错误。</code>: 基本上,我在一个包中初始化 InitializeWebdriver 类上的 webdriver 变量,然后在其他(步骤定义)类中引用它。我确实将下面的步骤定义列为 Initi

  • 问题内容: 我正在尝试使用Cucumber / Java编写一些硒自动UI测试。如果我的功能文件中只有一个测试,则一切正常。但是,如果我添加第二个测试,则会在上出现此错误: 基本上,我将在一个包中的InitializeWebdriver类上初始化webdriver变量,然后在其他(步骤定义)类中对其进行引用。我确实将下面的步骤定义作为InitializeWebdriver类的一部分列出,并且工作正

  • 我是Selenium的新手,在运行下面的脚本时,我会遇到空指针异常,一旦站点调用loads,测试就会停止运行。我无法理解例外的原因。 代码如下: 我得到以下错误: 请帮助我,我做错了什么,提前感谢!

  • 问题内容: 我有在Android上运行良好的代码。当我将其移植到具有JRE 1.6的Windows 64位计算机上时,该代码不起作用。 当我运行以下代码行时: 我得到以下异常: java.security.NoSuchAlgorithmException:SHA256 MessageDigest在java.security.MessageDigest.getInstance(未知源)处的java.

  • 我是Spring的新手。我正在使用SpringWebMVC开发RESTAPI。对于错误处理,我得到了这个链接http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann rest spring mvc异常 我曾尝试在我的项目中使用ResponseEntityExceptionHand

  • 我通过Spring Boot中编写的侦听器使用JMS对象消息。我正在通过我的Camel应用程序将ObjectMessage发送到ActiveMQ队列,我正在Spring Boot应用程序中的侦听器类中侦听队列。 代码: 这是我的POJO类: 在ActiveMQ队列中,我收到的消息为: 我在Spring Boot中的JMS侦听器: 我得到一个Exception@line: 通过堆栈溢出和网络上的其他