2016-06-30 4 views
2

Это мой первый вопрос здесь, и я пытался использовать Protractor для завершения теста конца. Мне нужно получить первый элемент из этой группы кода. Как вы можете видеть, у меня есть тот же класс и тот же подкласс для этих 3 элементов. Поэтому я решил получить его, используя индекс.Как получить элемент его индекс в PROTRACTOR

<div class="col-md-4"> 
      <div class="form-group"> 
      <label>Número</label> 
      <input class="form-control ng-valid ng-touched ng-dirty" type="number"> 
      </div> 
     </div> 
<div class="form-group"> 
     <label>Inicio Vigência</label> 
     <input class="form-control ng-untouched ng-pristine ng-valid" placeholder="dd/MM/yyyy" type="date" value=""> 
     </div> 
<div class="form-group"> 
     <label>Fim Vigência</label> 
     <input class="form-control ng-untouched ng-pristine ng-valid" placeholder="dd/MM/yyyy" type="date" value=""> 
     </div> 

Я пытаюсь:

var numero = element.all(by.className('form-group')).get(2).all(by.tagName('input')); 
     numero.sendKeys(aux2); 

Но это не работает. Транспортир не посылает кнопки на входе.

ответ

0

Ну, если вам нужен первый элемент, просто использовать .first() вместо .get(2):

var numero = element.all(by.className('form-group')).first().all(by.tagName('input')); 
numero.sendKeys(aux2); 

Обратите внимание, что вы можете найти нужный элемент ввода в один проход с селектором CSS и first-of-type pseudo-class:

var numero = $(".form-group:first-of-type input"); 
numero.sendKeys(aux2); 

Или через nth-of-type():

var numero = $(".form-group:nth-of-type(1) input"); 
numero.sendKeys(aux2); 

$ здесь convenient shortcut до element(by.css()).


Другой способ подойти к этой проблеме было бы не полагаться на показатели формы группы (которая на самом деле звучит хрупким - представить интерфейс изменится и элементы управления формы будут просто переоформлена) и, вместо этого, найдите input элемент на основе его этикетке:

var numero = element(by.xpath("//label[. = 'Número']/following-sibling::input")); 
numero.sendKeys(aux2); 
+0

на самом деле это всего лишь пример, у меня есть более чем 10 элементов в этой группе, поэтому я пытался использовать получить (индекс). – paulotarcio

+0

@paulotarcio хорошо, обновил ответ различными способами, чтобы решить проблему. Надеюсь, это поможет. – alecxe

+0

@alexcxe Последний работает отлично. Спасибо за помощь. – paulotarcio

Смежные вопросы