无法引用在Selenium中进行Ajax调用后填充的infragistics ultra web grid控件

时间:2012-04-25 11:04:13

标签: ajax selenium infragistics

我们正在通过Ajax调用填充超网格控件中的值,但是当Ajax调用完成时,我们收到错误元素。

完整的序列如下:

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

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

命令序列:

  • clickAndWait | ID = lnkNew
  • 点击| ID = C1_stdItemNumber_btnAuto
  • 点击| //表[@ ID = 'C1xstdItemNumberxgrd_main'] // TBODY / TR // TD / NOBR [含有(文本(), 'textItem')]
  • clickAndWait | //按钮[@类型= '按钮']
  • waitForVisible | ID = C1xgridActivity_main
  • fireEvent | id = C1xgridActivity_main |集中
  • fireEvent | css =#C1xgridActivity_rc_0_2> nobr |焦点“这是失败的”
  • clickAt | css =#C1xgridActivity_rc_0_2> nobr“这是失败的”
  • doubleClickAt | id = C1xgridActivity_rc_0_8“这是失败的”
  • 类型| id = C1xgridActivity_tb | 1“这是失败的”

2 个答案:

答案 0 :(得分:1)

我解决了这个问题。

当你加载页面时,在DOM中所有CSS对象都被初始化,但是稍后在处理和完成Ajax调用时,CSS对象不能在同一页面中重新初始化,只有Ajax调用进程得到的对象才能被重新初始化intialized /填充。

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

答案 1 :(得分:0)

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

 waitForCondition | selenium.browserbot.getCurrentWindow().jQuery.active == 0; | 20000