我有一个页面对象,我正在创建一个在我的测试文件中使用的命令。当我使用像.elements()这样的WebDriver API命令时,我创建的元素不会被传递,也不能在回调函数中使用。
示例代码:
var commands = {
command1: function () {
var element1 = "div.some-class"; //I end up doing this
this.api
.elements("css selector", "@element1", function (result) {
return this
.click("@element2");
})
}
}
module.exports = {
url: function() {
return this.launchUrl;
},
elements: {
element1: "div.some-class",
element2: "h2[id=some-id]"
},
commands: [commands]
}
我注意到调用.api会让你无法使用元素,但有什么方法可以解决这个问题吗?我一直在为我的每个命令制作变量,但我觉得这样做会破坏元素的目的。
答案 0 :(得分:1)
使其在自定义函数中更通用,你可以使用:
var objectSelector = this.page.pageobject.elements[elementName]
它应该返回element1
css:div.some-class
如果我想到更好的解决方案,请将其发布在评论中