2012-07-25 110 views
0

嗨 - 道歉的一個通用問題的機器人...我們通過使用Selenium Web驅動程序(v2.24.1)自動化我們的UI測試,它像一個夢幻般的例外在IE9上。Selenuim在IE9和jQuery的addClass和removeClass

我們通過addClass和removeClass jQuery方法隱藏/顯示UI控件,從而完成客戶端功能的一部分。 addClass和removeClass jquery方法追加(或刪除)DOM中的類。這樣,我們可以做硒硒DOM迭代尋找這些變化,以觸發動作...

我們的問題是,那些DOM的變化並沒有反映在IE9 - 例如,功能一切都在IE瀏覽器工作正常,但「DOM是靜態的」,因此硒不能reckognize一些面板顯示或隱藏...

所以,問題:

1)是否有辦法來反映IE9中的addClass和removeClass以動態方式? 2)我們是否應該以不同的方式監控/捕捉變化? (可能在引起我們問題的組件上分配某種事件監聽器?)

希望這個問題不是太模糊 - 這不是一個特定組件的問題,但我認爲這是更加困難的方式我們正試圖在跨多個產品的通用方法使用Selenium ...

回答

1

讓我知道我的理解正確:在狀態

  • DOM負載「A」
  • 的jQuery操縱DOM國家「B」
  • 硒在IE9並不反映在狀態「B」的DOM它仍然看起來像「A」

如果以上的情況下也許你遇到了與硒和IE9的錯誤嗎?

這裏是一個可以快速的解決辦法:通過Selenium執行JavaScript後的DOM處於狀態「B」(或檢查它是否已經達到狀態「B」),並將結果返回到硒:

IJavaScriptExecutor js = webDriver as IJavaScriptExecutor; 
string hasClass = (string)js.ExecuteScript("$('#ui-control').hasClass('someClass')");