watir webdriver对象类型检测

时间:2012-06-15 13:15:37

标签: ruby watir-webdriver

我对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()的实际实现。

任何建议或指针都表示赞赏:提前谢谢

塞尔吉奥

1 个答案:

答案 0 :(得分: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标记。因此,在上述情况下,语句将引发异常。我认为e会更具体。
  • 在case语句的开头,它只是'e.to_subtype'而不是'e.to_subtype.class'(如How to catch Errno::ECONNRESET class in "case when"?中所述)。