0

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

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

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

InternetExplorerDriver excep1;

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

4

3 回答 3

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() 放在我需要驱动程序的每个地方。

于 2012-10-04T09:02:53.507 回答
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;
于 2013-07-05T07:38:25.187 回答
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();
  }
}
于 2012-10-03T13:34:19.703 回答