ruby - watir webdriver 对象类型检测

标签 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() 的实际实现。

如有任何建议或指示,我们将不胜感激:提前致谢

塞尔吉奥

最佳答案

您可以根据元素变量的类(将其转换为子类型后)进行 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”而不是“e.to_subtype.class”(如 How to catch Errno::ECONNRESET class in "case when"? 中所述)。

关于ruby - watir webdriver 对象类型检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051387/

相关文章:

ruby - 如何在 watir webdriver 中按住控制键

cucumber - 运行测试时出现超时错误 Cucumber/Watir

ruby-on-rails - Nginx Rails 错误

ruby - 比较运算符 `<=>` 和 bool 值

ruby - 为文件夹启动 Web 浏览器?

ruby - 使用 Watir-webdriver 如何检查页面的 URL

ruby - (Watir webdriver) 在 OSX 10.9 中使用多显示器时如何将浏览器移动到另一个屏幕

ruby - 与 Smalltalk 相比,Ruby 中的 block

ruby-on-rails - 如何使用 STI 向派生类添加列?

ruby - 如何以编程方式确定网页是否具有不安全元素?