selenium-webdriver - 在 Selenium 和 IEx 中触发更改事件?

标签 selenium-webdriver internet-explorer jquery-events

我才刚刚开始使用 Selenium,所以我仍在全神贯注于所有事件部件。我已经启动并运行了我的第一个测试套件,但我终生无法让 jQuery 事件监听器在 IE 中触发。

这在动态 AJAX 下拉列表中尤其成问题,例如 $('#country').live('change',showStates) 选择 -> id=国家 | label=美国

selenium 驱动程序触发事件以响应所有其他浏览器的测试脚本,但我尝试过的任何事情都不会导致或强制触发 change 事件。我已经尝试使用我能在 SO 上找到的所有记录方法,包括:

这些命令都不会触发 IE9、8(模拟)或 7(模拟)中的事件。 FWIW 目前还不清楚这些是否真的会导致事件在其他浏览器中触发,因为其他浏览器会在没有额外调用的情况下触发 change 事件。我在 Windows 7 上运行独立的 selenium jar 2.33。

如何使用 selenium 在 IE 中触发更改事件?

最佳答案

根据我的经验,直接触发 javascript/jQuery 并不是最安全的处理方式。而是尝试使用 UI 交互来模拟用户。例如,要触发“country.change()”事件,只需使用 Selenium 更改国家字段中的国家(您可能需要跳出该字段)。我相信这是预期用途。

我发现一些下拉列表可能会很痛苦。我会在您的下拉列表中尝试以下一组操作:

  1. 获取当前选择的选项(在 DDL 的最顶层元素上调用 getText)
  2. 单击 DDL(以显示选项
  3. 获取显示的选项列表
  4. 发现当前选项与预期选项之间的距离
  5. 发送适当数量的 DOWN 或 UP 键(取决于方向),然后是 ENTER 或 TAB 键

在使用第三方 UI 包时,我不得不遵循这种过程,该包将 DDL 的格式与它处理 DDL 的操作分开。这意味着当 Selenium 与元素交互时,它用于预期效果不会发生,因为它们正在其他地方由 javascript 处理,而在元素 Selenium 具有句柄的上下文中没有。发送 key 模仿用户操作并强制 javascript 自行执行。让我知道这是否不清楚以及它是否有效。

关于selenium-webdriver - 在 Selenium 和 IEx 中触发更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16907512/

相关文章:

selenium - 如何设置 IE 浏览器在 Headless 模式下运行的能力

python - Selenium:WAITING空元素(跨度)包含任何文本

xml - 为什么 Internet Explorer 在通过后退按钮返回页面时不显示正确的 XML 转换?

javascript - IE9 问题 : Dynamically created (through innerHTML) option buttons and check boxes are not working

javascript - IE9兼容性: jQuery ajax post request

c# - 如何在 Selenium 中使用 Telerik 下拉菜单?

javascript - 如何处理页面中任意位置的点击,即使某个元素停止了传播?

javascript - 我如何检测 jQuery 触发事件的完成?

javascript - 事件和委托(delegate)事件之间的区别?

python - 无法点击不同结果从内页解析标题