在之前的脚本步骤中,我更新了上一年的销售额,并且我正在尝试确认总保证金美元已正确自动更新为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>
答案 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'