2016-06-30 68 views
0

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

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

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');} 
}); 

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

+2

你真的不应该需要在页面对象之间传递上下文。您的主脚本将实例化并使用不同的页面对象。上下文应该包含在页面对象本身中。你能举出一个更详细的例子,说明何时你可以在页面对象之间传递上下文吗? – JeffC

+0

你能再看看吗?我已经更新了这个问题。 –

回答

1

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

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

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

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