今天在做selenium+Junit測試的時候,發現selenium的type和select函數雖然能模擬輸入和選擇列表的功能,卻不能觸發相應控件上的onXXX 事件,比如onblur、onchange等,使測試無法正確進行。經過一番谷歌和思索,得出了以下解決辦法:
首先保證你的測試類繼承SeleneseTestCase而不是TestCase(前者是後者的子類),這是爲了在測試時使用SeleneseTestCase的pause函數。
以select觸發onchange事件爲例:兩個下拉列表A和B,B要根據A的選項列出不同的選項,如果只用selenium的select函數,是不能解決的。
第二行是必須的,我做過實驗,如果沒有這一行onchange事件無法觸發。
第三行使程序暫停1秒,爲的是給JavaScript運行的時間,如果沒有這一行,錯誤可想而知了。