所以,我想知道如何解决我在界面中没有构造函数的事实?
我正在使用JUnit和Selenium进行测试自动化。我有一个基础测试类,它有一个名为getDriver(LoginPage loginPage)
的方法。此方法用于初始化Web驱动程序。 LoginPage是一个具有登录方法的接口。问题是我的所有页面对象构造函数都采用了Web驱动程序。并且getDriver方法在Web驱动程序中。所以,我的问题是如何只用接口初始化此方法中的页面对象?感谢
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;
}
答案 0 :(得分:0)
您可以在现场创建一个匿名类,或者在另一个类中实现该接口并实例化它。
尽管使用Java代码输入密码似乎并不是一个好主意,尤其是当它以String
答案 1 :(得分:0)
我最终使用反射来解决这个问题。
{{1}}