其他分享
首页 > 其他分享> > 如何使用waitForCondition()

如何使用waitForCondition()

作者:互联网

美好的一天,

我是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

我搜索过论坛等等,但是到目前为止我没有找到任何帮助.任何提示都表示赞赏.

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

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

解决方法:

一些更多的搜索做了伎俩!对于其他想知道的人……

this post上发表评论的用户提到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会变得相当繁琐和烦人.

标签:java,eclipse,selenium,selenium-rc
来源: https://codeday.me/bug/20190626/1298284.html