1

私はWatirにはかなり慣れていません。

正しいメソッドを適用するために、サブルーチンが受け取ったオブジェクトのタイプを検出する方法を探していました。最終結果は次のようになります。

sub clickOnElement (elementId, elementRef)
element= browser.(elementId.to_sym, elementRef)
case TypeOfElement (element)
   :link            element.click
   :radio           element.set
   :checkbox        element.set
   :list            ....
end
end

私の質問は、TypeOfElement() の実際の実装に関するものです。

任意の提案やポインタをいただければ幸いです: 事前に感謝します

セルジオ

4

1 に答える 1

3

要素変数のクラスに基づいて case ステートメントを実行できます (サブタイプに変換した後)。この方法では、独自の TypeOfElement メソッドを実装する必要はありません。

何かのようなもの:

e = browser.element
case e.to_subtype
    when Watir::CheckBox
        e.set
    when Watir::Anchor #Link
        e.click
    else
        raise( e.class.to_s + ' not handled' )
end

ノート:

  • browser.element は、HTML タグとなる最初の要素を返します。したがって、上記の case ステートメントでは例外が発生します。e はより具体的なものになると思います。
  • case ステートメントの開始時は、'e.to_subtype.class' ではなく単に 'e.to_subtype' です ( How to catch Errno::ECONNRESET class in "case when"? で説明されているように)。
于 2012-06-15T14:35:54.107 に答える