2

我正在测试一个噩梦般的网站,在大多数情况下,它会将所有重要的东西都放在 iframe 中。

但是,还有其他常见的情况,系统会烦人地在新选项卡中打开一个页面,但不包含在 iframe 中。

我正在尝试找出一种条件方法来检查 iframe 的存在并使用它,否则不会。

到目前为止,这是我想出的:

# The browser object...
@br = Watir::Browser.new

“frm”是我试图开始工作的条件方法......

# Just an example element definition...
def click_my_button
  @br.frm.button(id: "button").click
end

我在 Watir 的 Container 模块中定义它,如下所示:

module Watir
  module Container
    def frm
      if frame(id: "iframeportlet").exist?
        frame(id: "iframeportlet")
      else
        # This is the part that I can't figure out.
      end
    end
  end
end

当 iframe 存在时,它工作得很好,但毫不奇怪,当它不存在时,我会收到 NilClass 错误。

所以,我的问题是:在 else 子句中可以加入什么来使它起作用?更广泛地说,是否有更好的方法来实现这一点?正如你可以想象的那样,我真的很想避免将网站中的每个元素都定义两次。

4

1 回答 1

0

我想通了,这很简单。frm 方法的 else 子句只需要一个“自我”......

else
  self
end

就是这样。不过,我很想知道这种方法是否存在任何隐藏的陷阱。

于 2013-02-08T21:32:41.067 回答