我正在尝试围绕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对象上做了什么并记录它。我不能在这里这样做,因为我无法将块转换为字符串。 : - /