Webdriver.io pageObject模式 - 通过传递参数定义元素选择器

时间:2016-05-17 12:48:43

标签: javascript selenium webdriver webdriver-io

我正在关注这个例子,为了使用ID选择器定义pageObjects中的元素......

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有什么想法吗?

1 个答案:

答案 0 :(得分:3)

这是一种使用属性描述符在属性上定义函数的方法:

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