我正在使用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
是可以的。
答案 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" />
每个必填字段都有几个这样的标签,这些标签没有填充,所有这些标签都聚集在一起。它们都是“输入”标签,让我感到困惑。