2011-03-18 74 views
7

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

我都试过组合,但似乎没有任何工作... 如果browser.image(:SRC“/media/images/icons/reviewertools/editreview.jpg").exists 然后... 如果browser.image(:src“/media/images/icons/reviewertools/editreview.jpg").exists? 然后...

如果任何人有具体的建议,如何实现这一点,请帮助!谢谢!

+0

请提供图片的HTML – 2011-03-21 11:03:51

+0

请提供HTML没有它,我们只能猜测你在做什么错误,对于我们所知道的这件事不是,但可能是一个 2011-03-22 19:36:16

+0

可能的重复http://stackoverflow.com/questions/5359556/unable-to-find-method-for-detecting-if-element-exists-on-a-page/5396645#5396645 – 2011-03-22 19:41:58

回答

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/)。

试试这些,但请让我知道什么工作。还有一件事,你在检查什么?如果它是测试标准的一部分,您可以这样处理。如果你需要点击它,那么忘记.exists?并点击它。如果Ruby不存在,Ruby会通知你。如果你需要它是恩典,请了解begin/rescue

祝你好运,

戴夫

+0

谢谢你们的答案。戴夫,请你指定一个例子,说明我应该如何使用image.exists?我使用的代码是: 如果browser.image(:src“/media/images/icons/reviewertools/editreview.jpg”) 。存在? 不工作并返回: Adm in_Panel2.rb:45:syntax error,unexpected')',expected kEND ... reviewertools/editreview.jpg“)。exists? ^ Admin_Panel2.rb:48:语法错误,意想不到的kELSE,期待DMOZ目录 Admin_Panel2.rb:212:语法错误,DMOZ目录,$期待结束 很抱歉,但我没有一个具体的例子丢失。谢谢。 – Rijksband 2011-03-19 01:48:33

+0

@rijksband语法错误意味着ruby解释器解析代码时出现问题。这可能意味着缺少/额外的括号或逗号或许多其他原因。在这种情况下,它最有可能是src和图像路径之间缺失的逗号。您可能想考虑使用更强大的编辑器,因为它们中的很多会在写入时指出错误。 – juan2raid 2011-03-19 16:57:50

2

您发布的代码应该只是罚款。 编辑:糟糕,错误。正如Katmoon指出的那样,缺少一个逗号。你可能会陷入了

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

的一个问题是,如果你指定的浏览器变量实际上是不存在的元素。

例如

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

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

+0

这仍然假设事情真的是一个图像..如果它是一个按钮或链接呢?没有他提供HTML我们只能猜测。 – 2011-03-22 19:37:41

15

看来你缺少参数之间的逗号。

应该

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

您也可以找到在未来this page有用知道是什么属性的支持。