关于IE 9的Selenium和jQuery的addClass和removeClass

时间:2012-07-25 13:27:55

标签: javascript jquery selenium internet-explorer-9 removeclass

对一般问题的机器人道歉...我们正在使用Selenium Web Driver(v2.24.1)自动化我们的UI测试,它就像一个梦想,IE9上的例外。

我们通过addClass和removeClass jQuery方法隐藏/显示UI控件,从而完成客户端功能的一部分。 addClass和removeClass jquery方法从DOM中追加(或删除)类。这样,我们可以进行Selenium DOM迭代查找这些更改以触发操作......

我们的问题是那些DOM变化没有反映在IE9中 - 例如功能上一切都在IE上正常工作,但“dom是静态的”,因此Selenium无法重新识别某些面板显示或隐藏......

所以,问题是:

1)有没有办法以动态方式反映IE9中的addClass和removeClass? 2)我们是否应该以不同的方式监控/捕获变化? (可能在导致我们问题的组件上分配某种事件监听器?)

希望这个问题不是太模糊 - 这不是一个特定组件的问题,但我认为这更像是我们尝试以多种产品的通用方式使用Selenium的方式......

1 个答案:

答案 0 :(得分:1)

让我确保我理解正确:

  • DOM加载状态“A”
  • jQuery操纵DOM以状态“B”
  • IE9中的Selenium没有反映状态“B”中的DOM,它仍然看起来像“A”

如果是这种情况,或许您遇到了selenium和IE9的错误?

这是一个可能的快速解决方法:在DOM处于状态“B”之后通过Selenium执行JavaScript(或检查它是否已达到状态“B”)并将结果返回到selenium:

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