如何使用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