非法破坏声明。 的NodeJS

执行下面的代码。 它显示非法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; } }) } }); }); }); 

问题是你正在使用一个break不是直接在for / while中 – 但是在一个承诺parsing函数里面是不正确的。

顺便说一下,如果你正在尝试从elementArray过滤一个element ,Protractor API提供了一个漂亮的方法 – ElementArrayFinder.prototype.filter ,它为你做了精确的工作。

对ElementArrayFinder中的每个元素应用filter函数。 返回一个新的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像每个元素,地图,减less等等..检查此链接