Watir webdriver无法确认字段值已更新

时间:2013-11-21 17:28:06

标签: webdriver watir

在之前的脚本步骤中,我更新了上一年的销售额,并且我正在尝试确认总保证金美元已正确自动更新为650000.我收到错误信息:

  

无法   使用id =>定位元素“GrossMarginDollar”,:tag_name => “输入”。

在之前的一个问题中,有一个答案是,如果有多个同名元素,在本例中为span3,则watir会选择html中的第一个,而不是第一个可见的元素。如果这是问题,我该如何指定 span3要使用?如果这不是问题,我应该使用什么来确认值已更新?

这是watir脚本:

confirm = browser.div(:id => "target_modal").div(:class => "modal-body").div(:class => "row").div(:class => "span3").input(:id => "GrossMarginDollar")
puts confirm.value.include? '650000'

这是html:

<div class="row">
    <div class="span3">
        <label for="FirstName">First Name</label>
        <input id="FirstName" type="text" data-bind="value:FirstName" />
        <label for="LastName">Last Name</label>
        <input id="LastName" type="text" data-bind="value: LastName" />
        <label for="Email">Email</label>
        <input id="Email" type="text" data-bind="value: Email" />
        </select>
    </div>
    <div class="span1"></div>
    <div class="span3">
        <label for="PreviousYearSales">Previous Year Sales</label>
        <input id="PreviousYearSales" type="text" data-bind="value: PreviousYearSales" />
        <label for="GrossMarginDollar">Gross Margin Dollar</label>
        <input id="GrossMarginDollar" type="text" data-bind="value: GrossMarginDollar" />
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

你是对的,因为Watir只用类'span3'检查第一个div,它不包含所需的输入字段。

您可以使用:index属性指定要使用的匹配项(即第二个匹配项)。请注意:index是从0开始的,因此“1”实际上是第二个匹配的div。

confirm = browser.div(:id => "target_modal").div(:class => "modal-body").div(:class => "row").div(:class => "span3", :index => 1).input(:id => "GrossMarginDollar")
puts confirm.value.include? '650000'

但是,我认为您已经指定了如何定位元素。通常,您希望尽可能少地使用信息(因为它使定位器对更改更加健壮)。在这种情况下,您有一个输入元素的id。鉴于id应该是唯一的,你不应该需要所有其他的东西。只需:

confirm = browser.input(:id => "GrossMarginDollar")
puts confirm.value.include? '650000'