Сбой локатора имени класса транспортира, но локатор xpath проходит - PullRequest
0 голосов
/ 18 октября 2018

Утверждение транспортира проходит с локатором xpath, но не с локатором имени класса.

Работает

var menu = element(by.xpath('/html/body/page/div[1]/div[3]/div[2]/div[1]/span'));

Передает свое утверждение.

Сбой

var menu = element(by.classname('menu'));

Выводит следующие ошибки:

В Chrome,

Failed: элемент не взаимодействует

В Firefox,

Failed: Элемент не может быть прокручен в представлении

Почему это может быть?

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Мы не можем предложить надежный селектор CSS, не видя DOM, особенно если вы не используете класс menu в своем селекторе xpath.Если вы хотите преобразовать его в css-селектор, вы можете попробовать:

element(by.css('page > div:nth-of-type(1) > div:nth-of-type(3) > div:nth-of-type(2) > div:nth-of-type(1) >span')); или любой более короткий эквивалент.

0 голосов
/ 19 октября 2018

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

Я попробовал element.all(by.className('menu')).get(1), и он отлично работает.

Спасибо за вашу помощь @yong и @Kacper за то, что вы указали мне правильное направление.

0 голосов
/ 18 октября 2018

by.classname() будет преобразован в by.css() транспортиром внутри.

by.classname('menu') будет преобразовано в by.css('.menu').

Попробуйте css selector: .menu вручную в chrome DevTools и убедитесь, что первый найденный элемент .menu такой же, как и в xpath: /html/body/page/div[1]/div[3]/div[2]/div[1]/span.

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