Невозможно сравнить значения element.getText() в операторе if - в автоматизации Protractor

Я новичок в транспортире, и я изо всех сил пытаюсь сравнить значения в условии if, я не уверен, что мне не хватает. Пожалуйста, проверьте мою спецификацию и дайте мне знать, что мне нужно сделать.

Спец.js:

Неугловая страница: щелкните элементы и getText() в массив

     browser.driver.findElements(by.css('classname')).then(function (list) {
     pageCounts = list.length;
     for (var pageIndex = 0; pageIndex < pageCounts; pageIndex++) 
     {
         pageName[pageIndex] = list[pageIndex].getText();
         list[pageIndex].click();
     }

Angular Page: проверьте заголовок

if (pageCounts > 1) {
    element(by.xpath('')).getText().then(function (title) 
    {
         expect(title).toBe('Accounts Created!');

Неугловая страница: как только заголовок соответствует, он переходит на другую неугловую страницу и сравнивает все значения getText() в приведенном выше коде со всеми элементами в меню и нажимает точное совпадение.

browser.driver.findElements(by.xpath('xpath')).then(function (totalPages) {
    for (var menulength = 1; menulength < totalPages.length; menulength++){
        menuPath[menulength] = browser.driver.findElement(by.xpath('xpath'));           
        menuPath[menulength].getText().then(function (menu) {
            for (var menuIndex = 0; menuIndex < pageCounts; menuIndex++) {

                if (menu === pageName[menuIndex]) {
                    browser.driver.findElement(by.xpath('')).click();                                            
                }
                else 
                {
                    browser.driver.findElement(by.xpath('')).click();
                }
            }
        }
    });

Он никогда не входит в цикл if (menu === pageName[menuIndex]).


person Suk    schedule 02.06.2015    source источник
comment
Пожалуйста, покажите свой HTML-код и опишите, чего вы пытаетесь достичь. Может быть более простой подход.   -  person alecxe    schedule 02.06.2015
comment
Привет alexce, Спасибо за ваш ответ. Я добавил несколько комментариев в свой код, которые могут помочь вам понять мою борьбу. Я смог перейти от неугловых страниц к угловым страницам. Моя основная цель - сравнить getText(), сформировать разные страницы, а затем выполнить операцию щелчка. Если я использую условие if(menu == 'String1'), оно работает нормально, но когда я пытаюсь использовать if(menu == pageName[menuIndex]), оно не работает   -  person Suk    schedule 02.06.2015


Ответы (1)


Вы можете упростить код, используя функцию each() для ElementArrayFinder:

var pages = element.all(by.css(".classname"));
var totalPages = element.all(by.xpath("xpath"));

pages.each(function (page) {
    totalPages.each(function (totalPage) {
        page.getText().then(function (pageText) {
            totalPage.getText().then(function (totalPageText) {
                if (pageText === totalPageText) {
                    element(by.xpath('xpath1')).click();
                } else {
                    element(by.xpath('xpath2')).click();
                }
            });
        })
    });
});

Существует также удобная функция map(), которую можно применить здесь тоже.

person alecxe    schedule 02.06.2015