2012-07-25 64 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')");