這里有g(shù)etObject方法在WATIR中使用普遍。主要是對該P(yáng)AGE中的各種TAG進(jìn)行精確定位。然后使用該Object的屬性進(jìn)行特殊事件處理,下面是text_field的set方法主要是事件定位,發(fā)送鍵盤信息等處理。
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化轉(zhuǎn)化,方便對object的操作)。AutoIT主要是對windows窗口屬性的設(shè)置和操作,比如發(fā)送鍵盤信息:
def send_keys (key_string)
autoit = WIN32OLE.new 'AutoItX3.Control'
autoit.WinActivate title
autoit.Send key_string
end
設(shè)置窗口狀態(tài):
def set_window_state (state)
autoit = WIN32OLE.new('AutoItX3.Control')
autoit.WinSetState title, '', autoit.send(state)
end
開源的Watir對于web ui自動化是一個很好的福音,對于幾個自動化工具的橫向?qū)Ρ,都大體思路大同小異 ,都是對HTML Page的解析,使用object或者文檔化后進(jìn)行正則表達(dá)式對對象的準(zhǔn)確定位,再使用IEController進(jìn)行操作,或者使用AutoIT對 windows窗口進(jìn)行操作。