Как проверить, содержит ли ElementArrayFinder подстроку - PullRequest
0 голосов
/ 20 мая 2019

У меня есть ElementArrayFinder, который содержит всю строку таблицы. Я хотел бы сделать утверждение, чтобы проверить, есть ли у него подстрока (не важно где).

const row: ElementArrayFinder = $$('div > div#myRow');

Решенное обещание row.getText() возвращает:

['id', 'some data', 'expected text xoxo', 'some more data']


Ближайшее решение:

expect(row.getText()).to.eventually.deep.includes('expected text');

возвращает: AssertionError: expected [ Array(4) to deep include 'expected text']


expect(row.getText()).to.eventually.deep.includes('expected text xoxo');

* * +1025 проходит

Любой совет приветствуется.

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Просто чтобы избежать недоразумений - elementArrayFinder может не иметь текстовых значений элементов. Лучше всего об этом думать, когда elementFinder - это справочная информация о том, как найти свой элемент на странице (только направление)

Теперь, поскольку вы можете .getText() вашего elementArrayFinder, теперь очень легко делать то, что вы пытаетесь сделать. Но перед этим имейте в виду, что предыдущий ответ будет работать только в том случае, если элемент вашего массива точно равен вашему 'expected text'. Например,

expect('expected text xoxo', 'some more data']).toContain('expected text xoxo') // this succeed
expect('expected text xoxo', 'some more data']).toContain('expected text') // this fails
// because 'expected text xoxo' !== 'expected text'

Но если вы хотите проверить, содержит ли какой-либо элемент их массива часть строки, используйте vanilla js array.some ()

let arr = ['id', 'some data', 'expected text xoxo', 'some more data'];
expect(arr.some((item)=>{return item.includes('expected text')})).toBe(true)
0 голосов
/ 20 мая 2019

Я просмотрел документацию Чая, и это кажется невозможным.

Я вижу два пути решения моей проблемы:

  1. Разрешите обещание на string[], затем выполните итерацию по каждому элементу и проверьте, используя .includes('expected text').
  2. Используйте транспортир filter() на ElementArrayFinder с getText() на каждом элементе. Используйте оператор if для проверки .includes('expected text'), а check - длина нового ElementArrayFinder длиннее 0.
...