Ruby Watir-Webdriver的浏览器包装器

时间:2013-02-22 19:51:53

标签: ruby watir watir-webdriver

我正在尝试围绕Watir-Webdriver的Browser对象编写一个包装器。主要是当用户打电话时

browser = Watir::Browser.new
browser.link(:text => 'continue').click

我想检查用户在浏览器后键入的内容并将其记录下来,然后调用Watir-Webdriver的浏览器并执行操作。

我怎样才能做到这一点?

更新

我有一个公开UI测试功能的基类。它为用户实例化浏览器并将其公开为$ browser。当派生类对$ browser对象执行任何操作时,我想将其包装在begin / rescue中,并且我想记录用户正在执行的操作。因此,我不想暴露Watir的Browser对象,而是希望在调用Watir的Browser对象之前公开我自己的对象来进行日志记录。

现在,我通过在我的基类中使用一个带有块的方法来实现这个目的:

def perform(action, delay = 1)
    begin
        yield action if block_given?
        sleep delay
        assert(true)
    rescue  Watir::Exception::UnknownObjectException, 
            Watir::Exception::ObjectDisabledException,
            Watir::Exception::ObjectReadOnlyException,
            Watir::Exception::NoValueFoundException,
            Watir::Exception::MissingWayOfFindingObjectException,
            Watir::Exception::UnknownCellException,
            Watir::Exception::NoMatchingWindowFoundException,
            Watir::Exception::NoStatusBarException,
            Watir::Exception::NavigationException,
            Watir::Exception::UnknownFrameException,
            Watir::Exception::UnknownRowException,
            Selenium::WebDriver::Error::ElementNotVisibleError => e
        $log.error(e.message)
        assert(false)
    end
end

但是,我想删除此执行方法,以便调用者不必具有有关执行的任何知识。我还想检查调用者在$ browser对象上做了什么并记录它。我不能在这里这样做,因为我无法将块转换为字符串。 : - /

0 个答案:

没有答案