2011-01-07 43 views

回答

2

Ajax与Selenium有点混乱。有没有简单的回答你的问题,但我有几个小技巧..

您将需要使用大量的这些循环的等待动作/更新等:

 for (int second = 0;; second++) { 
     if (second >= 60) log.error("Timeout (60 seconds) while submitting request"); 
     try { if (selenium.isElementPresent("elementID")) break; } catch (Exception e) {} 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

而且启用Ajax的网页有很多时候,字符被输入到TextBox中触发的事件例如,然后selenium.type("elementID", "12345");不会为你。 typeKeys("elementID", "12345");将触发事件。

与Firefox和萤火虫,使用JavaScript调试器来分析一下在后台发生。我更喜欢使用Chromes Inspect调试器。谈谈你的开发人员找出什么触发某些元素等

其次,你可以对硒2.0的最新版本看看。网络驱动程序应该更好地处理Ajax请求,但我还没有时间去处理。

因此,在短期,你必须通过你自己写很多代码和修改记录的部分。如果不工作在那里的一些商业的,更好地处理某些类型的Ajax的。

0

如果你使用XPath,那么它将无法工作。尝试CSS定位器。我在RC中使用了Sizzle.js定位器,它在所有ajax元素中运行良好。

对于IDE,你可以去可用的插件或者自己写和使用用户extensions.js选项插入。