与Selenium(RC)的Javascript通信

时间:2009-11-30 13:42:54

标签: javascript python testing selenium selenium-rc

我的应用程序根据用户对应用程序的操作方式和时间,在JavaScript中进行了大量计算。该项目打印出有价值的信息(通过控制台调用),了解此计算的进展情况,因此我们可以轻松发现任何NaN爬行。

我们计划将Selenium(RC与python)集成到测试或项目中,但如果我们可以在python测试用例中获取控制台输出消息,我们可以识别任何NaN甚至任何错误计算。< / p>

那么,有没有一种方法能让Selenium吸收这些输出(最好是在无控制台的环境中)?

如果没有,我想知道我是否可以转移控制台调用,可能是通过将console变量重新绑定到其他内容,以便selenium可以获得该输出并通知python端。或者如果不是控制台,还有其他方法可以实现这一点。

我知道selenium有像waitForElementPresent等命令,但我不想在应用程序上显示这些中间计算,或者它是唯一的方法?

任何帮助表示感谢。

谢谢。

2 个答案:

答案 0 :(得分:4)

GetEval()调用返回对页面的JavaScript调用结果。如果您在页面上有JavaScript,那么您可以执行类似

的操作
self.assertEqual(selenium.GetEval("this.browserbot.getUserWindow().functionUnderTest().isNaN();"),"false","There was a NaN detected")

browserbot访问允许您调用页面上的javascript函数并获得结果。如果得到一个不错的结果,isNaN()将返回false

答案 1 :(得分:1)

如果您纯粹测试JavaScript函数是否使用给定的输入执行正确的计算,我建议将JavaScript与页面分离,并使用JavaScript测试框架来测试功能。使用Selenium测试低级代码是很多不必要的开销。如果您要反对完全呈现的页面,这将要求您的应用程序运行到服务器,而服务器不应该是测试原始JavaScript的依赖项。

我们最近使用jsUnit将我们的应用程序转换为使用YUI测试,到目前为止它一直很有希望。我们在不到三分钟的时间内在FireFox和IE中运行了大约150个测试。我们的测试仍然不理想 - 我们仍然使用Selenium艰难地测试了很多JavaScript。但是,将一些UI测试移至YUI测试可以为我们的持续集成环境节省大量时间。