如何在同一窗口中继续新的测试执行,但使用新类?

时间:2012-10-03 13:28:25

标签: testing junit selenium-webdriver

我在selenium webdriver中测试,在Internet Explorer中使用junit运行它。所以我为ie创建了webdriver:

System.setProperty("webdriver.ie.driver", "IEDriverServer.exe");
        InternetExplorerDriver driver = new InternetExplorerDriver();

我需要继续我的测试,但是使用另一个课程。所有操作都在与第一次测试相同的窗口中执行,因此我不需要创建新的即驱动程序。如何继续测试执行?我尝试在第二次测试中创建新的webdriver,如

InternetExplorerDriver excep1;

但在使用java.lang.NullPointerException运行第一类测试失败后。

3 个答案:

答案 0 :(得分:0)

您需要创建一个InternetExplorerDriver,然后将同一个实例传递给这两个类。

由于您传递了同一个实例,因此第二个类将从另一个停止的点继续。

例如

(我没有运行代码,因此可能有错误。)

public class Main {
  public static void main(String[] args) {
    InternetExplorerDriver driver = new InternetExplorerDriver();
    Class1 class1 = new Class1(driver);
    Class2 class2 = new Class2(driver);
    class1.run();
    class2.run();
  }
}

答案 1 :(得分:0)

我找到了使用Singleton解决问题的合适方法。我只需要创建一个新的类,它包含我的实例

public class Browser{


    private static InternetExplorerDriver driver;

    private void InternetExplorerDriver(){
    }

    public static InternetExplorerDriver getInstance(){
            if (driver == null){
                driver = new InternetExplorerDriver();
            }
            return driver;
    }

}

将Browser.getInstance()放在我需要驱动程序的每个地方。

答案 2 :(得分:0)

您可以在主类中将驱动程序对象设置为静态,以便所有其他对象可以使用相同的实例。

public class MainClass {
  public static void main(String[] args) {
    public static InternetExplorerDriver driver = new InternetExplorerDriver();        

    //works as same as above example
    TestCaseClass1 tc1=new TestCaseClass1();
    TestCaseClass2 tc2=new TestCaseClass2();
    tc1.t1ExecutionMethod();
    tc2.t2ExecutionMethod();

  }
}

在TestCase类(即TestCaseClass1,TestCaseClass2等)中按如下方式初始化驱动程序,

InternetExplorerDriver driver = MainClass.driver;