3

根据用户对应用程序的操作方式和时间,我的应用程序在 JavaScript 中进行了大量计算。该项目打印出有价值的信息(通过控制台调用)关于这个计算是如何进行的,所以我们可以很容易地发现任何NaN潜入的信息。

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

那么,Selenium 有没有办法吸收这些输出(最好在无控制台环境中)?

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

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

任何帮助表示赞赏。

谢谢你。

4

2 回答 2

4

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

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

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

于 2009-11-30T14:00:06.943 回答
1

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

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

于 2009-12-14T18:10:33.177 回答