Java 如何使用waitForCondition()

Java 如何使用waitForCondition(),java,eclipse,selenium,selenium-rc,Java,Eclipse,Selenium,Selenium Rc,你好 我对selenium是新手,我正在尝试编写一个简单的测试。我想测试我的AJAX功能,所以我认为waitForCondition()方法非常适合我。问题是,我每次都会收到一个错误,说“testLoop”没有定义。我的测试很简单: @Test public void firstTest() { selenium.open(BASE_URL); assertTrue(selenium.isElementPresent("css=a#performAjax")); sel

你好

我对selenium是新手,我正在尝试编写一个简单的测试。我想测试我的AJAX功能,所以我认为waitForCondition()方法非常适合我。问题是,我每次都会收到一个错误,说“testLoop”没有定义。我的测试很简单:

@Test
public void firstTest() 
{
    selenium.open(BASE_URL);
    assertTrue(selenium.isElementPresent("css=a#performAjax"));
    selenium.click("link=Add some content!");
    String script = "selenium.browserbot.getCurrentWindow().document.getElementByClassName('ajaxMessage').length > 0";
    selenium.waitForCondition(script, "10000");
    Assert.assertEquals(selenium.getText("css=div.ajaxMessage"), "You got me with AJAX!");
}
但每次我运行它时,都会出现错误:

com.thoughtworks.selenium.SeleniumException: ERROR: Command execution failure. Please search the forum at http://clearspace.openqa.org for error details from the log window. The error message is: testLoop is not defined
我已经搜索了论坛等,寻找答案,但到目前为止我没有发现任何有用的东西。任何提示都将不胜感激

关于编写selenium测试的更好方法的其他提示也很受欢迎,但我的主要目标是避免这个错误:)


如果有人想知道,是的,我已经验证了错误是在调用waitForCondition()时抛出的。

再进行一些搜索就成功了!对于任何想知道

一位对此发表评论的用户提到waitForCondition()扩展的当前实现与selenium的当前版本不同步。必须更新user-extensions.js文件,以将“testLoop”的所有实例替换为“testLoop”

如果您像我一样将selenium rc作为外部jar导入Eclipse,那么这就是解压缩jar、编辑js文件并将其重新压缩到jar中的问题

更新:

经过进一步研究,waitForElementPresent()似乎是实现这一点的首选方法,因为您可以简单地指定定位器,而不是计算JavaScript表达式。还有waitForTextPresent()和其他等价物

这些AJAX方法不存在于使用selenium rc获得的.jar文件中。它们在Selenium IDE中可用,如果您将这些测试导出到Java,您将看到它只是创建一个默认超时为60秒的循环,并检查isElementPresent()

如果您更喜欢严格地从Java驱动模式工作,那么您可能可以创建一些助手来为您完成这项工作,因为解压缩jar、修改用户扩展和重新压缩jar变得相当乏味和烦人