【问题标题】:Enter text in input in Watir with same class在具有相同类的 Watir 中输入文本
【发布时间】:2017-01-23 03:50:21
【问题描述】:

我正在尝试在输入字段中输入文本,但无法成功运行。我有两个如下所示的输入:

<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"}>

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

【问题讨论】:

    标签: ruby web-scraping watir


    【解决方案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

    【讨论】:

    • TEXT HERE 是输入框中显示的文本。因此很难搜索,因为每次的文本可能都不一样
    • 这是否意味着classText 正在启用contenteditable 并且实际的文本字段不可见?由于那不是标签,用户如何知道该字段的用途?作为一个人,您可以查看要与这些字段中的哪些进行交互。至少,您应该能够对 Watir 使用相同的规则。
    • 刚刚编辑了 HTML 以表示它的外观。我可以找到该段的父类,但无法访问文本字段。
    • @user081608 嗨,在这种情况下您可以使用 xpath!
    • 我更新了如何为更新后的 HTML 定位文本字段。但是,如果文本字段不可见,您将无法使用set 方法。
    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多