我的网站有很多ajax,需要自动化。但是,我无法正确记录网站的ajax部分。我尝试了waitfor关键字并失败了。我还浏览了以下网站http://www.ibm.com/developerworks/opensource/library/os-webautoselenium/index.html,但未能说明如何将代码应用于MyEclipse。
有没有人有一些关于如何测试ajax应用程序的好教程?
提前致谢
答案 0 :(得分: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和firebug,使用javascript调试器分析后台发生的情况。我更喜欢使用Chromes Inspect调试器。与您的开发人员交谈,了解某些元素等触发的内容。
其次,您可以查看最新版本的Selenium 2.0。 Web驱动程序应该更好地处理Ajax请求,但我还没有时间使用它。
简而言之,你必须自己编写很多代码并修改记录的部分。如果不能解决那些能够更好地处理某种类型Ajax的商业代码。
答案 1 :(得分:0)
如果你正在使用XPath,那么它将无法正常工作。尝试CSS定位器。我在RC中使用Sizzle.js定位器,它适用于所有ajax元素。
对于IDE,您可以使用可用的插件或编写自己的插件并使用user-extensions.js选项进行插入。