Транспортир - проверьте, присутствует ли элемент, и либо прекратите тест, либо продолжите - PullRequest
0 голосов
/ 14 июля 2020

У меня есть тест Protractor, который извлекает различные значения из пользовательского интерфейса и сохраняет их как переменные для сравнения со значениями из другой базы данных.

Теперь этот тест нужно запускать на нескольких сайтах, НО из 25 максимальных данных записано очков, на некоторых сайтах только 22.

Ясно, что тест не проходит на этих «22» сайтах, так как элементы отсутствуют.

Я хочу добиться того, чтобы было «22». site, тесты на отсутствующие элементы игнорируются, и тест продолжается до конца. Удобно, что "недостающие" элементы являются последними в спе c.

Грубо говоря ...

if element-y is not present end test or if element-y is present continue

Благодарен, если кто может посоветовать.

Спасибо @sergey. Я изменил ваш пример, как показано ниже ....

 if (!(await element(by.xpath('//*[@id="root"]/div/div[2]/main/div/div/section[5]/div/div/div[1]/section/div/span')).isPresent())) {
console.warn ('Functions are not present, closing the session')
await browser.close()

Я получаю эту ошибку:

if (!(await element(by.xpath('//*[@id="root"]/div/div[2]/main/div/div/section[5]/div/div/div[1]/section/div/span')).isPresent())) {
        ^^^^^^^

SyntaxError: Unexpected identifier

Я пробовал использовать 'var' вместо фактического элемента, но получите тот же результат. Спасибо

1 Ответ

1 голос
/ 14 июля 2020

ну, лучший вариант, который я помню, все еще довольно грязный ... вы можете сделать что-то вроде этого

if (!(await element.isPresent())) {
  console.warn('Element not present, closing the session')
  await browser.close()
}

И тогда остальные тестовые примеры завершатся неудачно как session not found или аналогичная ошибка

Причина, по которой вы не можете сделать ничего лучше, потому что в транспортире вы не можете выполнять условные тестовые примеры, основанные на условии, подобном обещанию, если это имеет смысл ...

...