2016-05-17 19 views
1

我下面的例子中,为了定义pageObjects内的元件,使用该ID选择限定元件选择器...Webdriver.io pageObject图案 - 通过使参数

var Page = require('./page') 

var MyPage= Object.create(Page, { 
    /** 
    * define elements 
    */ 
    firstName: { get: function() { return browser.element('#firstName-0'); } }, 
    lastName: { get: function() { return browser.element('#lastName-0'); } }, 

... 

我寻找一种方法来通过一个可以让我动态定义选择器的参数。例如'#firstName-0'我想要'#firstName-' + i,所以我可以收集多个名字。

我已经试过

firstName: { get: function (i) { return browser.element('#firstName-' + i);}} 

然后在考试..

MyPage.firstName.get(0).setValue('foo'); 

但抱怨说get()不是一个函数。

Doe任何人有任何想法?

+0

请你试着改变以外的方法的名称'得到'并更新。 – nullpointer

+0

对不起,不知道你在做什么? –

+0

我猜测在访问列表元素('list.get(index)')和调用方法(在你的情况'get(i)')中存在冲突,并且要确保它不是你'重新结束。 – nullpointer

回答

2

这里有一个方法来定义一个属性的功能与属性描述:

var Page = require('./page') 

var MyPage= Object.create(Page, { 
    /** 
    * define elements 
    */ 
    firstName: { value: { get: function (i) { return browser.element('#firstName-' + i); } } }, 
... 

用法:

MyPage.firstName.get(0).setValue('foo'); 
+0

完美!谢谢!引起我注意的是我对“get”和“value”函数的理解不够。你是否知道解释这些是什么以及如何/何时接到电话? –

+0

查看MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create –