WebDriverIO: вернуть видимые элементы? - PullRequest
0 голосов
/ 28 сентября 2018

Я работаю над набором тестов с WebDriverIO, в котором на тестируемом сайте есть несколько дублирующих элементов, но они выборочно появляются при взаимодействии с пользователем ...

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

Есть ли способ для меня захватить / вернуть просто видимые всплывающие подсказки?

Я могу захватить истину / ложь, используя ...

let visElements = browser.isVisible('div.tooltip');

(который возвращает массив типа [false, true, false, false, false]). Есть ли способ вернуть правдивый элемент длядополнительное тестирование?

Обновление:

Мое не очень элегантное решение, пока ...

let visElements = browser.elements('div.tooltip');
let visBool     = browser.isVisible('div.tooltip');
let index       = (visBool === true)? 0 : visBool.indexOf(true);
let element     = visElements.value[index];

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

1 Ответ

0 голосов
/ 30 сентября 2018

Вы можете использовать новую find функцию , доступную в массивах, для поиска в этом массиве одного видимого элемента:

let tooltips = browser.elements('div.tooltip');

let visibleTooltip = tooltips.find(tt => tt.isVisible())

// can do any element function on it like getText
visibleTooltip.getText()

Если вы хотите получить все видимые подсказки, вы можете использовать filter вместо :

let tooltips = browser.elements('div.tooltip');

let visibleTooltips = tooltips.filter(tt => tt.isVisible())

// can do any element function on it like getText
let ttText = visibleTooltips.map(tt => tt.getText())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...