【问题标题】:Why is Selenium RC so slow?为什么 Selenium RC 这么慢?
【发布时间】:2011-01-22 05:06:57
【问题描述】:

一段时间以来,我一直在研究 Selenium RC,以便对我的 Web 应用程序进行功能测试。我现在发现了一种非常有效的测试策略,我不想离开 Selenium RC(在花了数周时间试图找出一种验证 ASP.NET 验证控件的好方法之后)。

但是现在我的 Selenium RC 冒险正在从 POC 转变为我实际使用的东西,我遇到了一个问题。它非常缓慢。执行加载页面、填写某些字段并单击按钮的单个测试需要几秒钟的时间才能执行。当它执行时,我可以很容易地看到每个单独的字段一次填写一个。在 Firefox 中使用 Selenium IDE 并没有那么慢。

我找到了这个页面,它明确指出 Selenium RC 很慢 http://selenium-grid.seleniumhq.org/how_it_works.html

但这是为什么呢?是因为浏览器正在轮询 selenium 服务器吗?如果是这样,这个轮询间隔可以不修改吗?还是有别的原因。我不习惯远程调用需要很长时间才能执行。

执行几个测试要花这么长时间真是太可怕了。我执行整个演示文稿 (MVP)、业务和数据库层测试套件(500 多个测试)的速度比为单个网页运行 10 次测试要快。

【问题讨论】:

    标签: selenium selenium-rc


    【解决方案1】:

    您是否在多窗口模式下使用 IE 和 Selenium 进行测试?这非常慢,您应该尝试使用 -singlewindow 启动 seleniumserver

    【讨论】:

      【解决方案2】:

      功能/集成测试需要更长的时间才能运行,尤其是因为它们是在浏览器中运行的。这意味着他们必须加载 MVC 的所有 3 层,然后在页面上执行任何操作时执行相同的操作。所以每一个动作都有可能进入数据库。与单元测试相比,这本质上是一项长期运行的任务。

      测试首先在该页面上执行open,然后等待所有内容加载。因此,如果这需要很长时间,那么如果您的用户要访问该页面,他们可能需要很长时间。例如。大量图片,未缩小的 JavaScript/CSS,下载过期。

      Selenium 的那个页面说服务器是一个瓶颈,因为这意味着您正在同步运行测试,如果您迁移到 Selenium Grid,它可以并行运行它们以使测试套件更快地完成。这并不是说 selenium 服务器正在轮询以查看它应该做什么,而是 Selenium 服务器轮询 Grid hub 以查看它是否仍然存在并显示它们仍然存在。

      测试运行缓慢的另一个原因是 Selenium 的基础语言是与 DOM 交互的 JavaScript。 DOM 会大大降低速度,尤其是在您的测试使用 XPath 作为定位器的情况下。 XPath + JavaScript + IE + Selenium == 很痛苦,我们 Selenium 开发人员无法做更多的微调。嗯,这将是 Selenium 2,它是 alpha 版本,可以从 http://selenium.googlecode.com/ 下载。我一直致力于 .NET 实现,目前看到了巨大的速度改进。我有blogged,因为这些变化让我震惊。我看到在使用 Selenium 1 运行 1 个测试的同时运行多达 8 个测试

      【讨论】:

      • 嗨。谢谢回复。我非常清楚功能测试相对较慢。但是 Selenium RC 本身比“正常”慢得多,即非 RC Selenium。使用 Selenium IDE 执行一个打开带有表单的页面、填写 15 个字段并提交表单的测试只需要几分之一秒。使用 Selenium RC 和 .NET 驱动程序进行相同的测试大约需要一秒钟。因此,显然存在特定于 RC 的开销。
      • 启动浏览器开销很大,并且是 RC 特定的。在所有其他 selenium 实例中,必须打开浏览器才能开始测试。
      • 除了启动浏览器之外,还有其他一些延迟。在中间测试中,IE 上的 Selenium RC 需要很多秒才能为我填写并提交一个字段。
      • Udo 的关于使用 -singlewindow 的回答解决了我在 IE 上硒速度慢的问题
      【解决方案3】:

      有没有可能是你的默认执行速度太低了?查看 DefaultSelenium 上的 getSpeed() 和 setSpeed() 方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-03
        • 2016-09-28
        • 2020-02-08
        • 2012-07-17
        • 2011-11-07
        • 2015-08-24
        • 2013-08-06
        • 2014-07-16
        相关资源
        最近更新 更多