如何检测Watir中是否存在元素

时间:2011-03-18 22:42:44

标签: ruby watir

我对Watir比较新,但是找不到关于如何检查元素是否存在的好文档(示例)。当然有API规范,但如果我找不到一个例子,这些对我来说没什么意义。

我尝试了两种组合,但似乎没有任何效果...... 如果browser.image(:src“/media/images/icons/reviewertools/editreview.jpg").exists 然后... 如果browser.image(:src“/media/images/icons/reviewertools/editreview.jpg").exists? 然后...

如果有人对如何实施这一点有具体建议,请帮忙!谢谢!

3 个答案:

答案 0 :(得分:17)

您似乎缺少参数之间的逗号。

应该是

if browser.image(:src, "/media/images/icons/reviewertools/editreview.jpg").exists?

此外,您可以找到this page,以便了解支持哪些属性。

答案 1 :(得分:2)

好像你正确使用它。这是一个旧的RDoc of Watir

它不起作用,因为Watir找不到它?很难分辨,因为没有源或链接到正在测试的页面。我认为我只使用 image.exists?。通常,图像存在但未找到的错误包括:

  1. 如何与元素类型不兼容。有一个备忘单可以帮助您查看哪些对象类型可以使用不同的属性here找到。
  2. 什么是不正确的。你可能不得不玩那一点。考虑尝试使用正则表达式字符串来匹配它,例如browser.image(:src,/ editreview.jpg /)。作为最后的手段,也许使用element_by_xpath,但是有维护成本。
  3. 位置不正确。也许元素在框架中或类似的东西。 browser.frame(“detail”)。image(:src,/ editreview.jpg /)。
  4. 试试这些,但请告诉我有用的。还有一件事,你要检查什么?如果它是测试标准的一部分,您可以这样处理它。如果你需要点击它,那么忘记.exists?然后点击它。 Ruby会告诉你它是否存在。如果您需要优雅,请了解begin/rescue

    祝你好运,

    戴夫

答案 2 :(得分:2)

您发布的代码应该可以正常工作。 编辑:哎呀,错了。正如Katmoon指出的那样,有一个缺少的逗号。

browser.image(:src "/media/images/icons/reviewertools/editreview.jpg").exists?

您可能会遇到的一个问题是,您指定的浏览器变量实际上是不存在的元素。

e.g。

b = Watir::IE.start(ipAddress)
b.frame(:name, "doesntExist).image(:src "/media/images/icons/reviewertools/editreview.jpg").exists?

上面的代码将抛出Watir :: UnknownFrameException。您可以通过首先验证帧存在或围绕开始/救援块中的代码来解决这个问题。