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

标签 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() 不是一个函数。

有人有什么想法吗?

最佳答案

以下是使用属性描述符在属性上定义函数的方法:

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

关于javascript - Webdriver.io pageObject 模式 - 通过传递参数定义元素选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276705/

相关文章:

python - USB : usb_device_handle_win. cc:1020 在 Windows10 上使用 Selenium 的 ChromeDriver v87/Chrome v87 无法从节点连接错误中读取描述符

java - 无法使用 Selenium 在 Chrome 浏览器的“权限”弹出窗口中单击 “Allow” 或 “Block”?

javascript - 循环访问对象时出错

javascript - !() 在 JavaScript 中是什么意思

javascript - 具有多个动画/效果的 JQuery slider

java - Selenium implicitlyWait 不工作?

javascript - 如何防止按钮在发送后提交表单?

c# selenium 使用 xpath 查找元素

python - 如何使用 Selenium [在 Python 中] 为 Firefox 导入 SSL 证书?

java - 在 JUnit 故障跟踪中显示错误