我有这段代码:
element.all(by.repeater('publication in newsPublications')).count().then(function (numNoticias) {
for (var i = 6; i < numNoticias; i++) {
array[i] = element.all(by.repeater('publication in newsPublications')).get(i)
.element(by.tagName('a')).getText();
browser.ignoreSynchronization = true;
element.all(by.repeater('publication in newsPublications')).get(i)
.element(by.tagName('a')).click().then(function () {
browser.driver.getAllWindowHandles().then(function (handles) {
browser.wait(function () {
return handles.length > 1
}, espera);
browser.driver.switchTo().window(handles[1]).then(function () {
expect(element(by.css('#contenido .limpiar')).getText()).toEqual(array[i]); // IT FAILS!!!!!
browser.driver.close();
browser.driver.switchTo().window(handles[0]);
});
});
});
但我不知道如何在打开的新标签中断言数组的值。期望失败......错误说:
预期&#39;文字标签1&#39;等于未定义。
答案 0 :(得分:1)
我认为您可以通过避免使用索引循环并切换到.each()
来简化它。另外,我还会明确解决getText()
以获取链接文本:
element.all(by.repeater('publication in newsPublications')).each(function (publication) {
var link = publication.element(by.tagName('a'));
browser.ignoreSynchronization = true;
link.getText().then(function (linkText) {
link.click().then(function () {
browser.driver.getAllWindowHandles().then(function (handles) {
browser.wait(function () {
return handles.length > 1
}, espera);
browser.driver.switchTo().window(handles[1]).then(function () {
expect(element(by.css('#contenido .limpiar')).getText()).toEqual(linkText);
browser.driver.close();
browser.driver.switchTo().window(handles[0]);
});
});
});
});
});