2017-01-23 8 views
0

Я пытаюсь ввести текст в поле ввода и не могу успешно его запустить. У меня есть два входа, которые выглядят так:Введите текст в поле ввода в Watir с тем же классом

<div class"outerParentClass"> 
    <div class="classLabel">From</div> 
     <div class="classA classB classD"> 
      <div class="classE"> 
       <div class="classText"> TEXT HERE </div> 
       <input class="classInputA classInoutB" type="text"> 
      </div> 
     </div> 
    </div> 
    <div class="classLabel">To</div> 
     <div class="classA classB classD"> 
      <div class="classE"> 
       <div class="classText"> DIFFERENT TEXT HERE </div> 
       <input class="classInputA classInoutB" type="text"> 
      </div> 
     </div> 
    </div> 
</div> 

Оба входа - это тот же формат, что и выше. Нет идентификаторов, и оба имеют одинаковые классы. Я изо всех сил пытаюсь ввести текст в эти или даже найти их правильно.

Когда я делаю это:

browser.text_field(:class => "classInputA").size 

возвращает 20

Когда я делаю это:

browser.text_field(:class => "classInputA") 

возвращает:

#<Watir::TextField:0x..fbccafb7ed2e9b85e located=false selector={:class=>"classInputA", :tag_name=>"input"}> 

Не знаете, как найти любой из этих inp UTS. Какие-либо предложения?

ответ

1

Текст, прилегающий к полю, предоставляет ярлык и контекст для поля. Поскольку это, вероятно, уникально, вы можете использовать это для идентификации элемента.

Для этого найдите div, содержащий текст этикетки. Затем перейдите к смежному div, содержащему текстовое поле.

browser.div(text: 'From', class: 'classLabel') # label of interest 
    .element(xpath: './following-sibling::div[1]') # adjacent div containing text field 
    .text_field # the text field 

Обратите внимание, что в следующем выпуске Watir, .element(xpath: './following-sibling::div[1]') будет заменяем только .following-sibling.

+0

ТЕКСТ ЗДЕСЬ - текст, который отображается в поле ввода. Поэтому трудно искать, потому что текст может быть различным каждый раз. – user081608

+0

Означает ли это, что 'classText' разрешает' contenteditable' и фактическое текстовое поле не видно? Как это не является меткой, как пользователи знают, для чего это поле? Как человек, вы можете видеть, с какого из этих полей вы хотите взаимодействовать. Как минимум, вы должны использовать те же правила для Watir. –

+0

Только что отредактировал HTML, чтобы представить, как он выглядит. Я могу найти родительский класс для сегмента, но не могу получить текстовые поля. – user081608