如何使用Selenium记录基于ajax的站点

时间:2011-01-07 09:37:14

标签: ajax selenium selenium-ide selenium-grid

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

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

提前致谢

2 个答案:

答案 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选项进行插入。