2017-01-23 40 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> 

這兩個輸入都與上面的格式完全相同。沒有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"}> 

不知道如何定位這些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

TEXT HERE是在輸入框中顯示的文本。因此,搜索很困難,因爲文本可能每次都是不同的 – user081608

+0

這是否意味着'classText'啓用'contenteditable'並且實際文本字段不可見?因爲這不是一個標籤,用戶如何知道該字段的用途?作爲一個人,你可以看到你想要與哪些領域進行交互。至少,您應該能夠對Watir使用相同的規則。 –

+0

剛編輯HTML代表它的外觀。我可以找到段的父類,但無法進入文本字段。 – user081608

相關問題