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

Webdriver.io pageObject pattern - define element selector by passing argument

我正在按照示例进行操作,以便使用 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() 不是函数。

有没有人有什么想法?

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

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