我在selenium webdriver中测试,在Internet Explorer中使用junit运行它。所以我为ie创建了webdriver:
System.setProperty("webdriver.ie.driver", "IEDriverServer.exe");
InternetExplorerDriver driver = new InternetExplorerDriver();
我需要继续我的测试,但是使用另一个课程。所有操作都在与第一次测试相同的窗口中执行,因此我不需要创建新的即驱动程序。如何继续测试执行?我尝试在第二次测试中创建新的webdriver,如
InternetExplorerDriver excep1;
但在使用java.lang.NullPointerException运行第一类测试失败后。
答案 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;