在java中,不要在接口中找到构造函数

时间:2015-06-01 13:59:54

标签: java selenium junit

所以,我想知道如何解决我在界面中没有构造函数的事实?

我正在使用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;
 }

2 个答案:

答案 0 :(得分:0)

您可以在现场创建一个匿名类,或者在另一个类中实现该接口并实例化它。

尽管使用Java代码输入密码似乎并不是一个好主意,尤其是当它以String

的形式出现时

答案 1 :(得分:0)

我最终使用反射来解决这个问题。

{{1}}