在Watir中使用相同的类输入文本

时间:2017-01-23 03:50:21

标签: ruby web-scraping 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>

两个输入都是与上面完全相同的格式。没有Id,两者都有相同的类。我正在努力将文本输入这些内容,甚至正确地找到它们。

当我这样做时:

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

它返回20

当我这样做时:

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

它返回:

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

不确定如何找到这些输入中的任何一个。有什么建议吗?

1 个答案:

答案 0 :(得分: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替换。