这里有getObject方法在WATIR中使用普遍。主要是对该PAGE中的各种TAG进行精确定位。然后使用该Object的属性进行特殊事件处理,下面是text_field的set方法主要是事件定位,发送键盘信息等处理。
def set( setThis )
assert_exists
assert_enabled
assert_not_readonly
highLight(:set)
@o.scrollIntoView
@o.focus
@o.select()
@o.fireEvent("onSelect")
@o.value = ""
@o.fireEvent("onKeyPress")
doKeyPress( setThis )
highLight(:clear)
@o.fireEvent("onChange")
@o.fireEvent("onBlur")
end
在源码中也用到了AutoIT与IE.document(在.NET自动化中非常常用,用来对HTML PAGE的document化转化,方便对object的操作)。AutoIT主要是对windows窗口属性的设置和操作,比如发送键盘信息:
def send_keys (key_string)
autoit = WIN32OLE.new 'AutoItX3.Control'
autoit.WinActivate title
autoit.Send key_string
end
设置窗口状态:
def set_window_state (state)
autoit = WIN32OLE.new('AutoItX3.Control')
autoit.WinSetState title, '', autoit.send(state)
end
开源的Watir对于web ui自动化是一个很好的福音,对于几个自动化工具的横向对比,都大体思路大同小异 ,都是对HTML Page的解析,使用object或者文档化后进行正则表达式对对象的准确定位,再使用IEController进行操作,或者使用AutoIT对 windows窗口进行操作。