如果尝试使用以下代码,则会创建多个实例

时间:2018-03-20 14:19:37

标签: selenium selenium-webdriver testng selenium-chromedriver

我在类BaseClass.java之下,它将初始化驱动程序以在TEST类中使用它。我保留了在注释@BeforeClass下获取驱动程序的方法。

   public class BaseClass{

        static WebDriver driver;

        @BeforeClass
        public void returnDriver(){
            driver = //I have some other method to initiate and return the driver to here 
        }
    }

现在,我将上面的课程扩展到我的Test课程

public class A extends BaseClass{

    public A(){
        returnDriver();
    }
    @Test
    public void a(){
    }
    @Test
    public void b(){
    }

public class B extends BaseClass{

    public B(){
        returnDriver();
    }
    @Test
    public void a1(){
    }
    @Test
    public void b1(){
    }

testng.xml下方使用以运行TestNG Suite。

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite">
      <test name="Test">
        <classes>
          <class name="B"/>
          <class name="A"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->

当我开始执行时,默认情况下有多个浏览器实例正在运行(即,如果有2个测试类,一次启动2个浏览器实例)虽然我没有在testng.xml中提供任何线程计数或并行执行。

1 个答案:

答案 0 :(得分:0)

  1. 从@ BeforeClass / returnDriver()方法中删除驱动程序初始化并将其移至类级别。
  2. 使用@AfterClass注释并关闭浏览器。
  3. 使用@BeforeSuite代替@BeforeClass
  4. 使用上述任何一种方法。