1

我有一个有很多 ajax 的网站,并且需要自动化。但是,我无法正确记录网站的 ajax 部分。我尝试了 waitfor 关键字,但失败了。我还浏览了以下网站http://www.ibm.com/developerworks/opensource/library/os-webautoselenium/index.html,但无法弄清楚如何将代码应用于 MyEclipse。

有没有人有一些关于如何测试 ajax 应用程序的好教程?

提前致谢

4

2 回答 2

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。

于 2011-01-07T09:54:42.297 回答
0

如果您使用的是 XPath,那么它将无法工作。试试 CSS 定位器。我在 RC 中使用 Sizzle.js 定位器,它适用于所有 ajax 元素。

对于 IDE,您可以使用可用的插件或编写自己的插件并使用 user-extensions.js 选项插入它。

于 2011-01-07T12:43:22.623 回答