我的任务是获取某些元素的子元素,遍历它们,并使用nightwatch断言进行一些测试。这是代码示例,我需要的是:
browser.url("http://someurl.com")
.getAttribute("#parent", "children", function (children) {
var assert = browser.assert;
var fisrtChild = children[0];
var secondChild = children[1];
assert.equal(fisrtChild.innerHTML, "Hello");
assert.equal(secondChild.innerHTML, "World");
})
那么,Nightwatch可以做这样的事吗?
P.S。我试图使用'元素'命令,但它返回如下内容:
{ state: 'success',
sessionId: '63af98a9-d395-4e44-9529-e24a7ad7ff87',
hCode: 1223583237,
value: [],
class: 'org.openqa.selenium.remote.Response',
status: 0 }
答案 0 :(得分:0)
首先,“children”不是HTML元素的有效属性。
其次,如果你给它一个参数,回调函数将简单地传递所述命令的结果。因此,显示的对象实际上是getAttribute命令的结果。
您可以使用browser.execute命令来执行您要执行的操作
基本上做以下事情: -
var firstChild;
var secondChild;
browser.execute(function() {
var childNodes = [];
childNodes.push(document.getElementById('parentID').childNodes);
firstChild = childNodes[0].innerHTML;
secondChild = childNodes[1].innerHTML;
}, [])
然后,您就可以对firstChild
和secondChild
的值执行断言。
注意:没有测试过这个,你可能需要稍微玩一下,但希望你能得到一般的想法
答案 1 :(得分:0)
您可以尝试以下代码。它将获取所有按钮,然后依次单击所有按钮。
browser
.url("http://someurl.com")
.elements('css selector', "button", function (links) {
for (var i = 0; i < links.value.length; i++) {
browser.elementIdClick(links.value[i].ELEMENT);
}
})