【问题标题】:Click checkbox with Nested Elements in Watir在 Watir 中单击带有嵌套元素的复选框
【发布时间】:2013-07-19 10:02:10
【问题描述】:

我会尽量保持简单。

我有一个类似这样的行列表:

HTML 代码:

<li ...>
    <div ... >
        <some elements here>
    </div>
    <input id="121099" class="containerMultiSelect" type="checkbox" value="121099" name="NodeIds">
    <a ...>
        <div ... />
        <div ... >
            <h2>Identified Text</h2>
            <h3>...</h3>
        </div>
    </a>
</li>

我想点击带有特定文本的复选框,但我不能使用它的任何元素,因为它们对于所有列表都是相同的,并且 id 是自动生成的。唯一可以区分的是 h2 文本。我试过了:

browser.h2(:text => /Identified/).checkbox(:name => "NodeIds").set

我得到了 UnknownException,这很明显,因为复选框没有嵌套标签。

在这种情况下我该怎么办?

谢谢

【问题讨论】:

    标签: testing watir watir-webdriver


    【解决方案1】:

    h2 和 checkbox 由 li 关联,li 是一个共同的祖先。因此,要查找复选框,您可以查找包含 h2 元素的 li。我发现最易读的方法是使用元素集合的find 方法。 find 方法基本上允许您制作自定义定位器。

    代码是:

    parent_li = browser.lis.find do |li|
        li.h2(:text => 'Identified Text').present?
    end
    parent_li.checkbox.set
    

    注意事项:

    • browser.lis 创建所有 li 元素的集合。
    • find 遍历 lis 并返回第一个使该块评估为 true 的元素 - 即第一个 li ,其中存在带有指定文本的 h2。

    【讨论】:

      【解决方案2】:

      先看看这个解释 http://jkotests.wordpress.com/2012/12/20/finding-a-parent-element-that-matches-a-specific-criteria/

      现在采用类似的方法,

      首先找到具有唯一标识符

      元素
      parent=@browser.h2(:text=>"Identified Text")
      

      现在我们必须迭代到父元素,它包含复选框针对它的文本

      parent=parent.parent until parent.tag_name=="li"
      

      一旦控件位于li 元素上,只需单击复选框即可。

      parent.checkbox.click
      

      【讨论】:

        猜你喜欢
        • 2015-06-08
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        • 1970-01-01
        • 2014-11-25
        • 2023-01-20
        相关资源
        最近更新 更多