使用Selenium-IDE和丰富的Javascript应用程序?

时间:2011-01-03 20:16:11

标签: javascript testing selenium selenium-ide javascriptmvc

问题

在我的工作场所,我们正在努力寻找为几乎完全由javascript驱动的Intranet应用程序创建自动化测试的最佳方法。现在我们一直在努力寻找一个很好的权衡:

  • 应用程序代码在可重用和可嵌套的GUI组件中。
  • 测试团队轻松创建的测试
  • 可以记录一次然后自动化的测试
  • 在对网站进行小型化妆品更改后不会破坏的测试

从Selenium-IDE生成的XPath表达式(或其他可能的表达式,如jQuery选择器)通常是不可重复的,非常脆弱。相反,让JS代码为页面上的每个重要DOM元素生成特殊的唯一ID值...好吧,这是它自己的头痛,复杂的可重用GUI组件和ID需要在测试重新进行时保持一致运行

其他人对这种事情有什么成功?您如何对丰富的JS界面进行自动化应用程序级测试?

限制

  • 我们正在使用JavascriptMVC 2.0,希望很快就能用3.0升级到jQuery 1.4.x.
  • 测试人员大多受过训练,可以使用Selenium IDE直接录制内容。
  • 测试主管更喜欢页面上每个可点击元素的页面唯一HTML ID ...
  • 培训测试人员编写或更改特殊表达式(例如告诉他们哪些HTML类名称是重要的分支点)是不行的。
  • 我们尝试制作可重复使用的javascript组件,但这意味着很少有GUI组件可以将自己(或它们包含的内容)视为唯一。
  • 我们的一些组件已在其操作中使用HTML ID值。我想避免这样做 ,但它使基于身份的测试的想法变得复杂。
  • 可以将自定义工具(如定位器构建器或新定位器方法)添加到Selenium-IDE安装测试人员使用。
  • 从传统浏览器的角度来看,几乎所有发生的事情都发生在单个“页面加载”中,即使项目已保存也是如此

当前的想法

我正在考虑一个系统,其中Selenium-IDE的自定义定位器构建器(javascript代码)将在测试人员正在录制时与我们的应用程序代码通信。通过这种方式,我们的应用程序成为为任何给定DOM元素生成大多数灵活的表达式(XPath或jQuery)的部分责任。虽然这可以避免需要对测试人员进行更多培训,但我担心这可能是过度思考的事情。

2 个答案:

答案 0 :(得分:1)

记录和播放不适用于大规模测试。它可能适用于烟雾测试和小型重复性任务。

尝试使用基于CSS的选择器解决问题,而不是尝试生成唯一ID。生成唯一ID是理想的目标,但我认为在所有实际情况下都不可能。

如果您正在尝试查找自定义定位器,最好查看BDD。

答案 1 :(得分:0)

你不能在selenium中使用css选择器吗?这似乎比使用XPath更直接。

http://saucelabs.com/blog/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/