WebdriverIO页面对象继承

时间:2016-06-30 15:02:13

标签: javascript selenium protractor e2e-testing webdriver-io

我正在使用WebdriverIO构建一个e2e测试套件,我一直坚持在页面对象之间创建继承。

在Protractor中,我们可以通过参数传递上下文,然后只搜索该上下文中的元素。例如,

var pageObject = context.element(by.css('.some-class'));

例如,

这是主页上的标题

var HomePage = require('./home.page');
module.exports = Object.create(HomePage, {
    headerModule: {get: function () {return browser.element('.header');}
});

这里也是主页上的页脚

var HomePage = require('./home.page');
module.exports = Object.create(HomePage, {
    footerModule: {get: function () {return browser.element('.footer');}
});

在这两个模块中,我有相同的按钮,我想为两种情况下使用的按钮创建一个页面对象。我应该使用哪个页面来继承?我不知道如何通过参数传递父页面对象。

1 个答案:

答案 0 :(得分:1)

我不确定我是否有足够的信息来理解你想要做什么,但我认为你可能会对页面对象的工作方式感到困惑。从您提供的示例中,您需要获取主页的页眉和页脚。在页面对象模型中,您将创建一个主页类(页面对象),在该类中,您将声明两个方法,一个用于获取标题,另一个用于获取页脚。这两种方法都是同一页面对象的一部分。

在脚本中,您将实例化主页类(页面对象),然后调用方法来获取页脚和/或标题。此时,没有必要传递上下文。获取页眉/页脚的所有代码都包含在主页类中的方法内。

我不知道量角器所以我不能给你写一些示例代码,但我确实发现这个页面对于使用量角器的页面对象看起来非常好。我建议您阅读它,并可能使用“量角器硒页面对象”作为搜索术语或类似内容来搜索更多指南。有几个结果看起来可能是好的。即使你在量角器中找不到很多关于页面对象的文章,阅读其他语言的文章也会帮助你更好地理解这些概念,所以希望你能用你选择的语言自己实现它们。

https://www.thoughtworks.com/insights/blog/using-page-objects-overcome-protractors-shortcomings