AngularJS транспортир: выберите div с помощью директивы ng-show

Мне нужно получить доступ к div с помощью директивы ng-show БЕЗ использования xpath

<div ng-show="my_error && dirty_field">
  Custom error message.
</div>

Я пробовал это, но это не работает должным образом

element(by.css('[ng-show=my_error && dirty_field]'));

а также

element(by.model('my_error && dirty_field'));

Как я могу сделать?

2 ответа

Просто чтобы добавить несколько пунктов здесь.

Прежде всего, вам определенно нужны цитаты вокруг ng-show значение в этом случае:

element(by.css('[ng-show="my_error && dirty_field"]'));

Это потому, что значение содержит не алфавитно-цифровые символы. Смотрите эту связанную тему:

Кроме того, я не думаю, что вы должны использовать dirty_field часть в вашем локаторе. Это звучит как более техническая переменная, используемая в логике проверки формы. Я бы использовал проверку "содержит" вместо того, чтобы проверить my_error только часть (обратите внимание, как я удалил кавычки в этом случае - значение буквенно-цифровое):

element(by.css('[ng-show*=my_error]'));

Также обратите внимание, что вы можете использовать $ ярлык вместо element(by.css()):

$('[ng-show*=my_error]');

Таким образом, вы тестируете транспортир с помощью свойств.

element.all(by.css('[ui-sref="about_us"]')).first();
element(by.css('[ng-click="clickme()"]')),
element(by.css('[ng-show*=show_me]'));
Другие вопросы по тегам