Транспортир ElementArrayFinder.filter() работает только один раз?

У меня проблемы с фильтрацией ElementArrayFinder <tr> элементы более одного раза в моей странице объекта. Второй фильтр вызывается сразу после первого. В следующем коде я сначала проверяю, есть ли число в таблице, а затем снова фильтрую его, чтобы щелкнуть по нему. Причина, по которой я не просто объединяю их, заключается в том, что они находятся в функциях, которые зависят от параметра batchNumber функции, и могут отличаться.

Фильтр:

function verifyBatchInList(batchNumber){
    BATCH_LIST_TABLE.filter(function(elem, i){
        return elem.element(by.xpath('./td[1]')).getText().then(function(text){
            text = text.trim();
            return text === batchNumber;
        });
    }).then(function(results){
        if(results.length < 1){
            throw new Error('Could not find batch "'+batchNumber+'" in batch list');
        }
    });
}
function editBatch(batchNumber){
    selectBatch(batchNumber);
    EDIT_BUTTON.click(); //this never happens
}
function selectBatch(batchNumber){
    BATCH_LIST_TABLE.filter(function(elem, i){ //this function never runs
        return elem.element(by.xpath('./td[1]')).getText().then(function(text){
            text = text.trim();
            return batchNumber === text;
        });
    }).then(function(results){ //this never runs either
        if(results.length < 1){
            throw new Error('Could not find batch "'+batchNumber+'" in batch list');
        }
        results[0].click();
    });

Когда я помещаю точку останова в функцию фильтра, она получает только первую итерацию, но не вторую. Спекуляция работает это выглядит так.

it('can commit batch', function(){
    page.addSpecimens.getBatchId().then(function(text){
        batchIds[0] = text.split(' ')[0];
        page.addSpecimens.commitBatch();
        page = new pages.batchList();
        browser.sleep(2000); //for page to load, just temporary
        page.verifyBatchInList(batchIds[0]); //this works fine
    });
});
it('can edit batch',function(){
    page.editBatch(batchIds[0]); //this runs, but never actually filters
});

Html - это просто таблица, в которой первый td является номером партии.

0 ответов

Другие вопросы по тегам