Подтвердить что ты не робот

Предупреждение "Более одного элемента, найденного для локатора"

В одном из моих тестов я обнаруживаю элемент с помощью CSS selector:

element(by.css("ul.nav button"))

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

Проблема заключается в том, что protractor выдает предупреждение:

ПРЕДУПРЕЖДЕНИЕ - найдено более одного элемента для локатора By.cssSelector( "ul.nav button" ) - будет использован первый результат

Можно ли подавить предупреждение? Другими словами, как я могу позволить protractor знать, что я знаю о проблеме и не хочу, чтобы предупреждение было показано больше?


Использование protractor версии для разработки (устанавливается непосредственно из ведущей ветки).

4b9b3361

Ответ 1

Попробуйте это вместо:

element.all(by.css("ul.nav button")).first()

В основном, это говорит Транспортеру, что вы уже знаете там более одного элемента, и вам просто нужен первый (как вы сказали в своем вопросе).

Ответ 2

Предупреждение существует по какой-то причине. Вы слишком тесно связали свои тесты с вашими данными. Селектор слишком общий, и вы должны быть более конкретным. Либо говоря element(by.css("ul.nav button:nth-child(1)")), либо просматривая ваш поиск по-другому. Протракторные тесты не должны тестировать стиль или дом, они должны тестировать бизнес-логику.

Ответ 3

Меньше кода:

$$("ul.nav button").first()