我对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 =>”/ media / images / icons / reviewertools / savereview.jpg“}(Watir :: Exception :: 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子句。
如果您回复,请为您的建议提供具体的代码示例。
答案 0 :(得分:2)
答案 1 :(得分: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
答案 2 :(得分:1)
我建议检查DOM,仔细检查你的图像的src是否符合你的要求。在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)
您的代码没有任何问题(除了“存在”末尾的?,以及不包含您要查找的内容的最后一行)。
答案 3 :(得分:1)
假设这个东西确实是由它的HTML标签定义的'图像',那么你试图识别对象是否存在就会失败,因为
并且在另一次尝试中,您只提供了“什么”而不是如何,并且仍然使用了错误的方法。
试试这个
if browser.image(:src, "/media/images/icons/reviewertools/savereview.jpg").exists?
then browser.image(:src, "/media/images/icons/reviewertools/savereview.jpg").click
否则好好看看HTML,你真的在看一个'按钮'吗?