为什么第一个断言有效,但不是第二个?

时间:2013-10-18 18:43:42

标签: watir-webdriver

我正在使用Watir WebDriver和Firefox。

以下是同一元素的两个断言。第一个工作,但不是第二个:

assert_match(/Please add user to GMT/, @browser.small(:class, "error").text)
assert_match(/Please add user to GMT/, @browser.div(:class, "eight mobile-three columns").small(:class, "error").text)

我需要第二个断言才能工作,因为页面上有8条错误消息,如果用户没有填充8个必填字段,则会显示这些消息。所有8个错误都具有相同的HTML。所以,我需要能够从父母那里辞职。

这是HTML:

<div class="eight mobile-three columns">
  <a id="btnAddUserToGMT" class="success radius button expand error" onclick="AddUserToGMT();" data-reveal-id="addToGMT" href="#"> … </a>
  <small class="error" style="margin-top:0px;">

    Please add user to GMT

  </small>
</div>

以下是错误消息:

Watir::Exception::UnknownObjectException: unable to locate element, using {:class=>"error", :tag_name=>"small"}
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/element.rb:490:in `assert_exists'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/element.rb:85:in `text'
C:/Documents and Settings/Asserts_01.rb:22:in `testBasic'

第二个断言的投诉是:

unable to locate element, using {:class=>"error", :tag_name=>"small"}

然而第一个断言同样using是可以的。

1 个答案:

答案 0 :(得分:0)

问题解决了。

在与开发人员讨论后,似乎通过对自动生成的HTML的一些不寻常的操作,错误消息的文本出现在页面上的正确位置。但断言必须基于不同的标记,该标记在页面上的某个完全不同的位置指定。

例如,我试图在正确的位置断言此代码:

<small class="error" style="margin-top:0px;">

  Gender is required

</small

即使FirePath生成的唯一xPath也无法找到它。

我应该断言的是页面完全不同部分的HIDDEN标记。

<input id="errorMsgGenderID" name="errorMsgGenderID" type="hidden" value="Gender is required" />

每个必填字段都有几个这样的标签,这些标签没有填充,所有这些标签都聚集在一起。它们都是“输入”标签,让我感到困惑。