【问题标题】:Unable to find method for detecting if element exists on a page无法找到检测页面上是否存在元素的方法
【发布时间】:2011-03-31 00:47:47
【问题描述】:

我对 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 子句。

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

【问题讨论】:

  • 对于您尝试过但没有成功的事情,发生了什么?您是否收到错误消息,如果有,那是什么?当您提出问题时,提供具体信息会有所帮助,而不仅仅是“没用”它如何没用通常是有价值的信息,
  • 另外,如果您希望我们为您提供具体的代码示例,请提供具体的 HTML 示例。除非我们看到 HTML,否则我们无法提供除了猜测之外的代码示例。如果您希望人们为您编写代码,那么您至少可以向他们提供他们正在编码的 HTML。否则最多只能期待猜测或一般建议。 (这里没有人为你编写代码)

标签: ruby watir


【解决方案1】:
  1. 只有方法“存在?”和“存在?”。所以“存在”是行不通的。请咨询here
  2. 您能否尝试识别不同元素的存在,例如链接。对你起作用吗?应该没有例外。在这种情况下,Watir 需要返回 False。

【讨论】:

    【解决方案2】:

    您需要对单击和存在使用相同的语法吗?方法。 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
    

    【讨论】:

      【解决方案3】:

      我建议检查 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)

      您的代码没有任何问题(除了“存在”末尾的 ? 以及不包含您要查找的内容的最后一行)。

      【讨论】:

        【解决方案4】:

        假设这个东西真的是一个由它的 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,也许你真的在看一个“按钮”?

        【讨论】:

          猜你喜欢
          • 2020-01-31
          • 1970-01-01
          • 2018-02-04
          • 1970-01-01
          • 2020-08-17
          • 1970-01-01
          • 2021-09-05
          • 2017-11-15
          • 1970-01-01
          相关资源
          最近更新 更多