在执行以下代码时。它显示非法的break语句错误。我是nodejs的新手,请帮我解决这个问题。
代码是:
describe('Locating elements using JS', function () {
it('Locate H1 tags', function () {
browser.get("http://angularjs.org");
element.all(by.js(function () {
//This is javascript code which will get h1 elements
var elementsArray = new Array();
var anchors = document.querySelectorAll('h3');
for (var i = 0; i < anchors.length; ++i) {
if (anchors[i].textContent != '') {
elementsArray.push(anchors[i]);
}
}
return elementsArray;
})).then(function (webElements) {
//prints Number of h1 tags identified
console.log(webElements.length);
for (var i = 0; i < webElements.length; i++) {
webElements[i].getText().then(function (text) {
//prints text of each H1 tag
console.log(text);
//Verifying the text of each h1 tag should not be empty
expect(text).not.toBe('');
if(text=="Directives"){
break;
}
})
}
});
});
});
最佳答案
问题是您不是在for / while中直接使用break
-而是在错误的promise解析函数中使用。
顺便说一句,如果您尝试从element
中过滤一个elementArray
,则量角器API提供了一种漂亮的方法-ElementArrayFinder.prototype.filter,它可以为您完成确切的工作。
将过滤器函数应用于ElementArrayFinder中的每个元素。
返回一个新的ElementArrayFinder,其中包含所有通过
过滤功能。过滤器功能将ElementFinder接收为
第一个参数,索引作为第二个参数。这实际上不是
检索元素的基础列表,因此可以在页面中使用
对象。
describe('Locating elements using JS', function () {
it('Locate H1 tags', function () {
browser.get("http://angularjs.org");
element.all(by.js(function () {
//Your existing JS Code to identify elements
})).filter(function(elem, index) {
return elem.getText().then(function(text) {
return text === 'Directives';
});
}).first().click()
});
});
顺便说一句,如果您想签出更多
elementArray
元素中的元素(如地图,贴图,缩小等)的更多方法,请使用..检查this link