我可以在pageObject类中为WebDriver编写一个方法,然后在我的testcase类中调用该方法吗?
public class setupMethods {
static WebDriver driver;
public static void setup(String browser) throws Exception{
//Check if parameter passed from TestNG is 'firefox'
if(browser.equalsIgnoreCase("firefox")){
//create firefox instance
System.setProperty("webdriver.gecko.driver", "U:\\path\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
}
//Check if parameter passed as 'chrome'
else if(browser.equalsIgnoreCase("chrome")){
System.setProperty("webdriver.chrome.driver", "U:\\selenium\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
}
//Check if parameter passed as 'Edge'
else if(browser.equalsIgnoreCase("IE")){
System.setProperty("webdriver.ie.driver","U:\\path\\IEDriverServer.exe");
InternetExplorerDriver driver;
driver = new InternetExplorerDriver();
}
else{
//If no browser passed throw exception
throw new Exception("Browser is not correct");
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
这是一个我想在我的测试用例类中调用的方法,但是当我运行测试时它会启动Chrome(或任何其他浏览器),但是当它涉及到线路时会返回java.lang.NullPointerException
。驱动程序需要最大化窗口driver.manage().window().maximize();
答案 0 :(得分:2)
您的方法中有局部变量driver
,这就是您获得此异常的原因。
删除方法体中driver
的类型声明。
答案 1 :(得分:0)
以下是您的问题的答案:
直接回答,是,you can write a method for WebDriver in a pageObject class, and then call the method in your testcase class
您需要考虑代码中的某些更改,如下所示:
根据需要call the method in my testcase
,您需要返回WebDriver
个实例作为回复。因此,请将方法从public static void setup(String browser)
更改为public static WebDriver setup(String browser)
由于您已在WebDriver
中声明了static WebDriver driver;
的实例,因此在初始化{{1}时不再需要再次提及类名WebDriver
在} driver
从功能上讲,这会导致代码中出现WebDriver driver = new FirefoxDriver();
。
没有最佳做法,但我更愿意仅在NullPointerException
循环中检查传递的参数String browser
。
完成此课程中的所有操作后,请返回if
个实例。
您自己的代码有一些简单的调整,如下所示:
WebDriver
如果这回答你的问题,请告诉我。
答案 2 :(得分:0)
在使用@debanjanB建议的代码并使用构造函数在页面对象类中使用构造函数
后,我解决了我的问题...public name_of_pageobject_class(WebDriver driver){
this.driver = setupMethods.driver;
}
并在测试用例类中调用驱动程序:
WebDriver driver = setupMethods.setup("chrome");
如果出现任何问题,请纠正我......但现在可以了。