如何比较不同窗口(标签)中的两个值与量角器?

时间:2015-11-10 15:37:59

标签: javascript tabs compare protractor end-to-end

我有这段代码:

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;等于未定义。

1 个答案:

答案 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]);
                });
            });
        });
    });
});