2011-03-19 69 views
0
页面

上存在元素我是很新的的Watir。无法找到检测方法,如果

我有一点是应该检测是否元素存在,如果是这样,单击它,如果没有,点击不同元素的Ruby /的Watir代码。每一个元素都显示出来。不幸的是我没有尝试过。

if browser.contains_text("/media/images/icons/reviewertools/editreview.jpg") 
then browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").click 
else browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click 
end 

这最终失败, “无法定位元件,使用{:SRC =>”/媒体/图像/图标/ reviewertools/savereview.jpg “}(的Watir ::异常:: UnknownObjectException)”

它应该点击/editreview.jpg,这是可见的。

我也曾尝试:

if browser.image("/media/images/icons/reviewertools/savereview.jpg").exists 
then browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click 

还有:

if browser.image("/media/images/icons/reviewertools/savereview.jpg").exists? 

注意,这些案件无检测的元素,或者未能做到这一点,执行else子句。

请,如果您回应,您的建议提供具体的代码示例。

+2

可能重复(http://stackoverflow.com/questions/5358518/how-to-detect-if-an-element-exists-in-watir ) – 2011-03-19 08:55:25

+0

请提供相关的HTML – 2011-03-21 10:59:54

+0

对于你试过的东西,但没有奏效,发生了什么?你是否收到错误信息,如果有的话,它是什么?当你提出问题时,它有助于提供具体的信息,而不仅仅是'没有工作'它不工作通常是有价值的信息, – 2011-03-22 19:25:14

回答

2
  1. 只有方法 “的存在吗?”和“存在?”。所以“存在”是行不通的。请咨询here
  2. 你可以尝试找出不同元素的存在,比如一个链接。对你起作用吗?不应该有例外。在这种情况下,Watir需要返回False。
1

我建议检查DOM以检查您的图像是否符合您的要求。在IE8中按F12,或使用与您的浏览器相关的任何工具。您可以尝试使用IRB连接到浏览器并尝试查找图像。

如果失败那么我会尝试查找图像的另一种方式。如果图像处于某种形式,这可能会导致问题,您必须在图像前查找表单。

或尝试另一种方式找到它,只是为了确保它是可能的。

browser.image(:index => 3).click 
browser.image(:id => 'an_image').click 
browser.div(:id => 'image_container').image(:index => 2).click 

您可以使用this link,看看有什么办法可以识别图像,不要忘记,你可以同时使用不止一个标识符,如。 (:class =>/regexofaclass /,:index => 2)

您的代码没有问题,因为它(除了“exists”的末尾?和最后一行不包含你在找什么)。

1

。假定这个东西真的是定义由它的HTML标签中的“形象”,你试图确定对象是否有因为

  1. 没有使用正确的方法,在Ruby中失败,在一个问号
  2. 它不是文本返回一个布尔年底方法,

,并只提供的其它尝试的“是什么”,而不是如何,仍然使用了错误的方法。

试试这个

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

否则必须在HTML好好看看,你实际上是在寻找一个“按钮”吧?

2

您需要对click和exists使用相同的语法吗?方法。 Kat和Chuck以及Kinofrost也指出了这一点。

if browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").exists? 
then browser.image(:src => "/media/images/icons/reviewertools/editreview.jpg").click 
else browser.image(:src => "/media/images/icons/reviewertools/savereview.jpg").click 
end 
的[如何检测是否在存在的Watir的元素]