【问题标题】:Testing a "Dojo" web application with Selenium使用 Selenium 测试“Dojo”Web 应用程序
【发布时间】:2011-08-18 13:22:52
【问题描述】:
有没有人使用 Selenium 和 Dojo-heavy Web 应用程序进行了一些广泛的自动化?我正在寻找您可能遇到的任何问题或问题,或者与 Selenium 和 Dojo 的组合直接相关的问题。
【问题讨论】:
标签:
selenium
dojo
selenium-rc
【解决方案1】:
我已将 Selenium 广泛用于许多不同的 Web 应用程序,包括 Dojo 上的一些应用程序。你应该没事。我建议的一种做法是确保您将要测试的所有组件(您将要驱动的 UI 控件以及您要阅读以进行测试的文本组件)都设置了 ID 标签。 Selenium 有一堆优雅的选择器来获取您需要的元素,但按 ID 选择仍然是最好的。其他方法可能更脆弱。
Selenium RC 与我的代码的兼容性不如 Selenium IDE,我曾遇到过一些具有挑战性的经历,以至于我停止使用 Selenium RC。如果你对 Selenium 不是很熟悉,你应该知道它本身并不支持一些(IMO)非常基本的特性,比如流控制和包含;但是框架的用户扩展允许这样做。我还建议看一下 Watir,我现在通常比 Selenium 更喜欢它,因为它展示了一流语言 (Ruby) 的全部功能/灵活性。
【解决方案2】:
我现在正在开发一个重 Dojo 的应用程序,并且正在使用 Selenium IDE 进行大量测试。我遇到了某些 Dojo 元素的一些问题,例如下拉菜单和选项卡式组件。我学会了欣赏 XPath,并且一直在尝试如何使用 clickAt 和 waitForElementPosition 命令,这似乎有助于适应 Dojo 的某些功能。
【解决方案3】:
道场细节 - 非常简短
Dojo 本身在某些方法上与其他重型 DOM 和令人印象深刻的框架(如 ExtJS、jQuery、YUI)不同。
一般 Dojo 特定于它通过使用 Flash(YUI 也可以)或 Silverlight 来解决这些限制。
以下是 Dojo 可以使用 Fash 的几个场景:
浏览器不是 HTML5,javascript 需要本地存储。那么Dojo会使用“Flash Cookie”Flash本地共享对象(包dojox.storage)
需要支持跨域 https 调用。
可能使您的测试变得困难的一般技巧:
浏览器消息,例如“您希望允许此站点...”
嵌套框架会使节点的选择变得困难
javascript 超时/间隔它们在 Selenium 中的运行速度可能与在实际浏览器中的不同。是的,他们可以。
【解决方案4】:
我遇到的最大问题是 dojo 菜单和一般的弹出式 UI 元素绝对定位为 body 元素的子元素,并且不是元素的子元素创建它们。
这可能会影响您编写 Selenium CSS 选择器的方式,并且在我的情况下,自动裁剪包含菜单及其下拉菜单的屏幕截图更具挑战性。
【解决方案5】:
Selenium 应该可以与 dojo 一起使用,因为它是在 Firefox 中呈现的,而不是单独呈现的。只需确保在测试时 dojo 可用(即,如果您的测试环境没有互联网连接,请不要连接到 google 的 cdn)。但这是任何外部资源都会遇到的问题
【解决方案7】:
如果您需要在 SSL 环境中进行测试并且使用 Selenium RC 的 trustAllSslCertificates + 代理,则必须确保所有 JS 文件都托管在同一个域中。在最近的 Firefox 版本和 selenium rc 下测试时,我最近看到使用 CDN 加载 JS 和图像文件的问题