Транспортир - Как использовать несколько фильтров, чтобы узнать целевую строку - PullRequest
0 голосов
/ 05 марта 2019

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

Вот мой код:

 private selectTargetLicense(licenseName: string) {
    return new Promise((resolve => {
      element.all(by.tagName('clr-dg-table-wrapper')).first().all(by.tagName('clr-dg-row')).filter(function (row_element) {
        return row_element.all(by.tagName('clr-dg-cell')).filter(function (cell) {
          return cell.getWebElement().getText().then(function (text) {
            return text.trim() === licenseName;
          })
        })
      }).first().getWebElement().click().then(() => {
        resolve();
      })
    }))
  }

Не работает какчто я думаю, что не удалось получить целевую строку из строк в таблице.

Так как мне правильно использовать мультифильтр?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Нет необходимости использовать вложенные filter, достаточно фильтра по строкам.

private selectTargetLicense(licenseName: string) {

    const rows = element(by.css('clr-dg-table-wrapper')).all(by.css('clr-dg-row'));

    rows.filter((row) => {

        // read text of all cells of one row into array: txts
        return row.all(by.css('clr-dg-cell')).getText().then((txts) => {

            return txts.map((it)=>{
                        // trim each text
                        return it.trim();
                   })
                   // use array.includes() to detect row contains specified licenseName
                   .includes(licenseName);
        });
    })
    .first()
    .click();
}
0 голосов
/ 05 марта 2019

Довольно сложно исследовать ваш код без HTML-кода.Не могли бы вы показать это нам?

Хотите щелкнуть ячейку с заданным текстом или всей строкой?

Код для щелчка по ячейке:

private selectTargetLicense(licenseName: string) {
const rows = element.all(by.css('clr-dg-table-wrapper:nth-of-type(1) clr-dg-row clr-dg-cell'));
return rows.filter((row_element) => {
    return row_element.getText().then((text) => {
        return text.trim() === licenseName;
    });
}).first().click();

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...