Javascript IE9上的Selenuim和jQuery addClass和removeClass

Javascript IE9上的Selenuim和jQuery addClass和removeClass,javascript,jquery,selenium,internet-explorer-9,removeclass,Javascript,Jquery,Selenium,Internet Explorer 9,Removeclass,嗨-为一个普通问题的机器人道歉。。。我们正在使用SeleniumWebDriver(v2.24.1)自动化我们的UI测试,除了IE9之外,它的工作就像一个梦 我们通过addClass和removeClass jQuery方法隐藏/显示UI控件来实现客户端功能的一部分。addClass和removeClass jquery方法从DOM中追加(或删除)类。通过这种方式,我们可以进行Selenium DOM迭代,查找这些更改以触发操作 我们的问题是,这些DOM更改没有反映在IE9中–例如,从功能上讲,

嗨-为一个普通问题的机器人道歉。。。我们正在使用SeleniumWebDriver(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) 我们是否应该以不同的方式监控/捕获更改?(可能在导致我们出现问题的组件上分配某种类型的事件侦听器?)


希望这个问题不要太模糊-这不是一个特定组件的问题,但我认为这更多地取决于我们试图在多个产品中以通用方式使用硒的方式…

让我确保我正确理解:

  • 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')");