在java中,selenium在接口中没有构造函数
所以,我想知道我如何才能避开这个事实,我不能在接口中有一个构造函数
我正在使用JUnit和Selenium进行测试自动化。我有一个基本测试类,它有一个名为getDriver(LoginPage loginPage)
的方法。此方法用于初始化web驱动程序。LoginPage是一个具有登录方法的接口。问题是我的所有页面对象构造函数都使用web驱动程序。getDriver方法初始化web驱动程序。因此,我的问题是,如何在这个方法中仅使用接口初始化page对象?谢谢
public interface LoginPage {
public BasePage signIn(String user, String password);
}
//can't init LoginPage outside, since I need this method to init WebDriver
public static WebDriver getDriver(LoginPage loginPage)
{
if (WebDriverUtil.hasQuit()) {
log.debug("Creating new instance of driver");
BaseTest.init();
browser = region.getBrowser().getName();
driver = WebDriverUtil.initDriver(browser, baseURL);
wait = new WebDriverWait(driver, DEFAULT_TIMEOUT/1000 );
SeleniumUtil.waitForPageLoaded(driver,DEFAULT_TIMEOUT);
if(loginPage != null)
{
loginPage.signIn(user, pass);
}
}
return driver;
}
# 1 楼答案
我最终用反射来解决这个问题
# 2 楼答案
您可以当场创建一个匿名类,或者在另一个类中实现接口并实例化它
尽管使用Java代码输入密码似乎不是一个好主意,尤其是当它是以
String
的形式时