0

嗨 - 为一个普通问题的机器人道歉......我们正在使用 Selenium Web 驱动程序(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 的方式......

4

1 回答 1

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')");
于 2012-07-25T14:50:08.653 回答