我刚开始使用nightwatch.js。我想要获取一个元素列表,并验证每个元素的文本值和给定字符串。我试过了:
function iter(elems) {
elems.value.forEach(function(element) {
client.elementIdValue(element.ELEMENT)
})
};
client.elements('css selector', 'button.my-button.to-iterate', iter);对于另一个堆栈溢出问题,但我现在使用的是
waitForElementPresent('elementcss', 5000).assert.containsText('elementcss','Hello')并且它将向我返回输出
Warn: WaitForElement found 5 elements for selector "elementcss". Only the first one will be checked.所以我希望它应该验证列表中每个元素的文本值。
发布于 2015-05-13 18:01:27
所有的事情都不是通过nightwatch js简单的命令就能完成的,所以他们提供了自定义命令手段selenium协议。在这里,您可以拥有所有的selenium protocol。我使用了以下代码来断言具有给定字符串" text“的每个元素的文本值。希望能对你有所帮助
module.exports = {
'1. test if multiple elements have the same text' : function (browser) {
function iter(elems) {
elems.value.forEach(function(element) {
browser.elementIdText(element.ELEMENT, function(result){
browser.assert.equal(result.value,'text')
})
})
};
browser
.url('file:///home/user/test.html')
.elements('tag name', 'a', iter);
}
};我的HTML代码片段
<div id="test">
<a href="google.com" class='red'> text </a>
<a href="#" class='red'> text </a>
<a href="#" class='red'> text 1</a>
</div>
发布于 2015-05-13 18:43:05
我可以这样做:
.elements('css selector', 'cssValue', function (elements) {
for(var i=0;i<elements.value.length;i++){
var elementCss = 'div.search-results-item:nth-child(' + (i+1) + ') span';
client.assert.containsText(elementCss,'textValue');
}
})发布于 2016-01-15 19:33:07
将你的函数iter放在一个for循环中,然后再使用
client.elements('css selector', '#CollectionClass', function (result) {
if(result.value.length > 1) {
var count;
for(count=1; count<result.value.length; count++) {
result.value.forEach(function(element) {
client.elementIdValue(element.ELEMENT);
client.elementIdText(selectedHighlight.ELEMENT, function(resuddlt) {
this.assert.equal(typeof resuddlt, "object");
this.assert.equal(resuddlt.status, 0);
this.assert.equal(resuddlt.value, "your value");
});
}
}
}
};https://stackoverflow.com/questions/30193943
复制相似问题