WedX - журнал о программировании и компьютерных науках

Как выбрать один элемент с помощью транспортира

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

<div class="container">
 <div class="ng-scope" ui-view="" style="">
  <div class="logo-container ng-scope">
  <img class="img-responsive center-block" src="images/logo.png">   
 </div>
  <a class="ng-scope" ng-click="toggleNav('/inboxes/alerts')">
   <div class="inboxes inbox-alerts panel">
   <div class="panel-body">
   <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="panel-text ng-binding">
Alerts
<span class="badge ng-binding">3</span>
</span>
</div>
</div>
</a> 
<a class="ng-scope" ng-click="toggleNav('/inboxes/inbox')">
  <div class="inboxes inbox panel">
    <div class="panel-body">
      <span class="glyphicon glyphicon-inbox" aria-hidden="true"></span>
      <span class="panel-text ng-binding">
      Inbox
    <span class="badge ng-binding">41</span>
   </span>
  </div>
 </div>
</a>

Я смог сделать это с помощью element.all, но это возвращает массив элементов «[ 'Оповещения 3', '3', 'Входящие 41', '41', 'Список просмотра 104', '104']», но то, что я действительно хотел бы получить, это получить конкретный элемент.Ниже мой код

it('should open & close the Inbox panel', function() {
    var inbox_elm1 = element.all(by.binding('Inbox')).get(2);
      inbox_elm1.click();
 ]);
}); 

Как уже упоминалось, я использую get(2) для получения второго элемента. Но я бы не хотел использовать element.all для получения этого элемента.
Я пробовал другие вещи, которые возвращают nil, такие как

var inbox_elm1 = element(by.binding('Inbox'));

or

var inbox_elm1 = element.all(by.binding('Inbox')).first(); 

который возвращает ошибку.

Имея это в виду, я достаточно легко успешно выбрал элемент «Оповещения», так как это была первая панель, использующая:

var alrt_elm = element.all(by.binding('Alerts')).first();
alrt_elm.click();

Но повторение этого кода выше и изменение «Оповещения» на «Входящие» просто продолжали выбирать аккордеон «Оповещения», а не аккордеон «Входящие». Предложения? Извините за долгое чтение.


Ответы:


1

Вы можете использовать cssContainingText, который принимает локатор css в качестве первого параметра и текст в качестве второго параметра.

var alerts = element(by.cssContainingText('span.panel-text', 'Alerts'));
var inbox = element(by.cssContainingText('span.panel-text', 'Inbox'));

источник: https://www.protractortest.org/#/api?view=ProtractorBy.prototype.cssContainingText

26.05.2016

2
  • ты реально проверял это? похоже, у него есть некоторые вложенные проблемы с цитированием. Кроме того, хотя технически это может ответить на вопрос, ответы только на код не рекомендуются, потому что вы должны предоставить какое-то объяснение/контекст для своего ответа. 26.05.2016
  • Не могли бы вы объяснить, как ваш ответ решает проблему (ы) из вопроса? Ответы только на код не очень полезны, особенно для других читателей, которые наткнулись на этот пост. Спасибо! 26.05.2016
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]