1

我正在尝试围绕 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

但是,我想删除这个 perform 方法,这样调用者就不必对 perform 有任何了解。我还想检查调用者在 $browser 对象上所做的事情并记录下来。我不能在这里执行此操作,因为我无法将块转换为字符串。:-/

4

0 回答 0