2

私は悪夢のような Web サイトをテストしていますが、ほとんどの場合、すべての重要なものが 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句に何が入ることができますか? もっと広く言えば、これを達成するためのより良い方法はありますか? ご想像のとおり、Web サイトのすべての要素を 2 回定義する必要はありません。

4

1 に答える 1

0

私はそれを理解しました、そしてそれは非常に簡単です。frm メソッドの else 句には、「自己」が必要なだけです...

else
  self
end

それでおしまい。ただし、このアプローチに隠れた落とし穴があるかどうか知りたいです。

于 2013-02-08T21:32:41.067 に答える