我有一个有很多 ajax 的网站,并且需要自动化。但是,我无法正确记录网站的 ajax 部分。我尝试了 waitfor 关键字,但失败了。我还浏览了以下网站http://www.ibm.com/developerworks/opensource/library/os-webautoselenium/index.html,但无法弄清楚如何将代码应用于 MyEclipse。
有没有人有一些关于如何测试 ajax 应用程序的好教程?
提前致谢
我有一个有很多 ajax 的网站,并且需要自动化。但是,我无法正确记录网站的 ajax 部分。我尝试了 waitfor 关键字,但失败了。我还浏览了以下网站http://www.ibm.com/developerworks/opensource/library/os-webautoselenium/index.html,但无法弄清楚如何将代码应用于 MyEclipse。
有没有人有一些关于如何测试 ajax 应用程序的好教程?
提前致谢
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。
如果您使用的是 XPath,那么它将无法工作。试试 CSS 定位器。我在 RC 中使用 Sizzle.js 定位器,它适用于所有 ajax 元素。
对于 IDE,您可以使用可用的插件或编写自己的插件并使用 user-extensions.js 选项插入它。