2009-03-02 140 views
3

我想要創建的Watir測試通過寫feks自動完成下拉測試

填充客棧一個文本框

「LON」,並等到下拉被觸發,然後單擊在第一個元素上名單。

書寫「lon」應該引發很多選項,如「倫敦,英格蘭,Storbritannia」,倫敦,肯塔基州,美國等 這是不是可能與watir? thnx提前。

這是我的代碼看起來像直到現在, 它ö不工作,但我想知道我錯過了什麼。

高清test_scriptflight_autocomplete @ site.navigate_to(:旅行:飛行) from_field = @ site.ie.text_field(:身份證, 「locOriginName」) to_field = @ site.ie.text_field(:身份證,「locDestinationName 「) from_field.set(」奧斯陸「)

# need to fire a key press event after setting the text since the js is handling 
# trigger the autocomplete (requires a 'keydown') 
from_field.fire_event('onkeydown') 

# wait until the autocomplete gets populated with the AJAX call 
@site.ie.wait_until{@site.ie.div(:id, 'onlinesearch').lis.length > 0} 
puts @site.ie.div(:id, 'locOriginName ').lis.length 
puts @site.ie.div(:id, 'locOriginName').li(:index, 5).text 

# find the li you want to select in the autocomplete list and click it 
@site.ie.div(:id, 'from-field').li(:text, 'Oslo, Oslo, Norge').click 

回答

2

我和工作同事(Magnar)發現了這個博客,幫助我們找到了我一直在尋找的答案。

http://blog.saush.com/2008/05/using-rspec-and-watir-for-functional-testing-in-web-applications/

class Watir::IE 
    def fire_keydown_on(element_id, key) 
     ie.Document.parentWindow.execScript("key = document.createEventObject(); key.keyCode = #{key}") 
     ie.Document.parentWindow.execScript("document.getElementById('#{element_id}').fireEvent('onkeydown', key)") 
    end 
end 

從博客:

我們只是添加了IE類,這需要在元素ID的新方法「fire_keydown_on」和關鍵。這個方法調用Javascript來創建一個事件對象(順便說一下,它只能在IE中使用),並將關鍵代碼設置爲'13',這是回車鍵(回車鍵)。它調用Javascript來獲取HTML元素(使用元素ID)並在其上激發「onkeydown」事件,同時傳遞剛剛創建的事件對象。