Транспортир - Как мне вернуть элемент по тексту, содержащемуся в дочернем элементе? - PullRequest
0 голосов
/ 13 октября 2018

было интересно, смогу ли я получить помощь по этому вопросу.У меня есть массив <tr> элементов, возвращаемых при объявлении этой ссылки webelement

locationAuditsBySourceListViewTableRows : { //returns an array
    get : function(){
        return this.locationAuditsBySourceListViewTable.all(by.repeater('audit in location.displayedProfileAudits'));
    }
}, 

В одном из этих <tr> элементов находится диапазон, содержащий текст, который указывает строку, которую я хотел бы выбрать.

Текущая структура, в которой я работаю, имеет несколько похожих методов, которые я пытался реорганизовать для своих целей, но этот код не работает:

locationAuditsListViewRowBySource : {
    value : function(sourceName){
        return this.locationAuditsBySourceListViewTableRows.filter(elem => { 
            //elem - placeholder as we iterate  through each element within the locationAuditsBySourceListViewTableRows array           
            return elem.element(by.css(".source-name.ng-binding")).getText().then((val) => {
                return val.toLowerCase() == sourceName.toLowerCase();
            }); 
        }).first();             
    }
},

Мне кажется, что путь, по которомуЯ пытаюсь сослаться на диапазон в строке таблицы неправильно (вызов выполняется в методе .filter ()):

        return elem.element(by.css(".source-name.ng-binding")).getText().then((val) => {

Вот само определение шага:

Then(/^I should see that location audit for source row: "([^"]*)" has a label for the source$/, function (sourceName, callback) {
    browser.wait(EC.visibilityOf(listingsPageObj.locationAuditsBySourceListViewContainer), timeouts.EC_TIMEOUT).then(() => {
        browser.wait(EC.visibilityOf(listingsPageObj.locationAuditsBySourceListViewTable), timeouts.EC_TIMEOUT).then(() => {
            browser.wait(() => {
                return listingsPageObj.locationAuditsBySourceListViewTableHeaders.count().then(cnt => (cnt > 0)); //which means that there are audit results displayed
            }).then(() => {
                //find a row in the list of displayed audits
                var tableRow = listingsPageObj.locationAuditsListViewRowBySource(sourceName);                                       
            });
        });
    });
});

Кто-нибудь может мне помочь / направить меня в правильном направлении?

Спасибо.

1 Ответ

0 голосов
/ 13 октября 2018

Использование elem.element(by.css(".source-name.ng-binding")).getText() является правильным.

Но некоторые небольшие изменения в коде лучше:

return val.trim().toLowerCase() == sourceName.trim().toLowerCase();

return listingsPageObj.locationAuditsBySourceListViewTableHeaders
          .count().then(cnt => {return cnt > 0;}) // I think you need return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...