如何在页面对象模型中使用eventfiringwebdriver



我正在尝试在页面对象模型上使用EventFiringWebdriver。如何实现这一目标,因为pageFactory.initelements()方法仅将Web驱动器实例(而不是eventfiringwebdriver实例)。铸造EventFiringWebdriver到WebDriver在这里不起作用。

只需按照原理来实现自己的页面对象。您会发现从案例到公司(公司到公司)有很多不同的事情,而且"一件尺寸适合所有人"。

使用与页面工厂相同的示例,我会做类似(非常伪代码)的事情:

class Home {
    construct(WebDriver ) {
        this.webdriver = WebDriver
    }
    fillSearch(text) {
        webdriver.findById('x').send_keys(text);
    }
    submit(isValid) {
        if (isValid) {
            return new ResultsPage(this.webdriver);
        } else {
            return self(this.webdriver)
        }
    }
}

根据您的测试,您可能还必须在构造函数中注入一个"上下文" - 对于"多态"页面,这些页面具有不同的行为,具体取决于...上下文。

即。"登录"第一次可能会带您进入" Tour"页面,但之后到了"仪表板",因此您可能有类似的东西:

class Login {
    construct(WebDriver, context ) {
        this.webdriver = WebDriver
    }
    fillUsername(text) {
        webdriver.findById('username').send_keys(text)
    }
    fillPassword(text) {
        webdriver.findById('password').send_keys(text)
    }
    submit(isValid) {
        if (isValid) {
            if (context.isFirstTimeLogin) {
                return new Tutorial(this.webdriver, context)
            } else {
                return new Dashboard(this.webdriver, context)
            }
        } else {
            return self(this.webdriver)
        }
    }
}

您已经看到构造函数可以是一个抽象页面:)

相关内容

  • 没有找到相关文章

最新更新