0

我们正在从 Ajax 调用填充的超 Web 网格控件中输入值,但是当 Ajax 调用完成时,我们得到错误元素未找到。

完整的顺序如下:

页面上的元素:保存和取消图标、文本框、下拉菜单、项目选择器、弹出窗口、文本区域、空白 Infragistics ultraweb 网格。首次加载页面时,所有控件都被初始化,除了 ultraweb 网格。现在用户单击项目选择器并从弹出窗口中选择一个项目。此操作通过 Ajax 调用在页面上为项目详细信息及其数量初始化超 Web 网格。

现在我们无法在页面上引用 ultraweb 网格。请注意,我们可以引用所有其他控件。

命令顺序:

  • 点击并等待 | id=lnkNew
  • 点击 | id=C1_stdItemNumber_btnAuto
  • 点击 | //table[@id='C1xstdItemNumberxgrd_main']//tbody/tr//td/nobr[contains(text(),'textItem')]
  • 点击并等待 | //按钮[@type='按钮']
  • 等待可见| id=C1xgridActivity_main
  • 火灾事件 | id=C1xgridActivity_main | 重点
  • 火灾事件 | css=#C1xgridActivity_rc_0_2 > nobr | 关注“这失败了”
  • 点击 | css=#C1xgridActivity_rc_0_2 > nobr “这失败了”
  • 双点击| id=C1xgridActivity_rc_0_8 "这失败了"
  • 类型 | id=C1xgridActivity_tb | 1“这失败了”
4

2 回答 2

1

我解决了这个问题。

问题是当您加载页面时,在 DOM 中所有 CSS 对象都会被初始化,但稍后当 Ajax 调用被处理和完成时,CSS 对象无法在同一页面中重新初始化,只有 Ajax 调用处理的对象被初始化/填充.

您可以使用 XPATH 解决此问题。完成 Ajax 调用后,您可以引用页面上的所有元素。在这种情况下,将传递 WaitForElement 命令,但稍后当您尝试访问元素的值时,当您使用 CSS 引用元素时,该命令将失败。

于 2012-04-26T06:57:47.863 回答
0

如果您使用 jQuery 库,您可以使用以下命令等待 AJAX 调用完成waitForCondition

 waitForCondition | selenium.browserbot.getCurrentWindow().jQuery.active == 0; | 20000
于 2012-04-25T11:26:50.613 回答