【问题标题】:Javascript communication with Selenium (RC)与 Selenium (RC) 的 Javascript 通信
【发布时间】:2010-12-21 15:38:33
【问题描述】:

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

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

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

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

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

任何帮助表示赞赏。

谢谢。

【问题讨论】:

    标签: javascript python testing selenium selenium-rc


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢回复,我查看了getEval的文档。这是非常有帮助的。所以,我不能使用分散在应用程序中的所有通过控制台调用打印出来的东西?
    • JavaScript 代码中的控制台调用被视为不好的做法,因为不同的浏览器对它的反应方式不同。 stackoverflow.com/questions/915385/…
    • 您可以将所有信息保存在 document.window 内的数组中,然后使用 getEval 和 getUserWindow() 检索所有信息
    • @AutomatedTester:我认为控制台调用是一种非常好的调试方式,但我也反对在生产代码中使用它们。我们有一个 python 构建脚本,它删除控制台调用并缩小所有 .js 文件,然后部署到我们的生产服务器,因此控制台调用对我们非常有帮助。感谢您的链接顺便说一句。 @Santi:我在看到上述答案的那一刻就想到了这一点,但觉得这是一种做简单事情的肮脏方式。但如果没有其他答案,我想我会去的:)
    • 是的,听起来很脏。但是您必须知道,您正在尝试使用一种工具来获取 javascript 客户端后端信息,该工具旨在查看和测试用户在前端看到的内容。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回复,我一定会检查 YUI。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多