149

我将很快开始为我们的演示文稿编写一些自动化测试。看来大家都推荐WatiNSelenium。对于 ASP.NET Web 表单的自动化测试,您更喜欢哪个?这些产品中哪个更适合您?

作为旁注,我注意到自 2008 年 3 月以来,WatiN 2.0 一直在 CTP 中,这有什么要担心的吗?

4

15 回答 15

108

只想说,我目前正在努力在 2009 年第一季度的某个地方发布 WatiN 2.0 的 beta 版本。这将是对当前 CTP 2.0 版本的重大升级,并且基本上将为您提供与自动化 FireFox 和 IE 相同的功能1.3.0 版提供了 IE 自动化。

所以不用担心。

希望这有助于您做出选择 Jeroen van Menen Lead dev WatiN

于 2009-01-06T20:21:47.197 回答
58

如果您希望对一个将继续得到社区改进和支持的框架进行严肃的长期投资,那么 Selenium 可能是您最好的选择。例如,我刚刚在 Matt Raible 的博客上看到了这个信息:

截至周五,谷歌有超过 50 个团队每天在内部 Selenium Farm 上运行超过 51K 次测试。这些测试中有 96% 由 Selenium RC 和 Farm 机器正确处理。其他 4% 部分是由于 RC 错误,部分是由于测试错误,但找出原因可能很困难。Selenium 已被用作 Google 内部 Web 应用程序功能测试的主要技术。这就是好消息。

我最近还参加了一次 Selenium 聚会,了解到 Google 正在投入大量资源来改进 Selenium 并将其与 WebDriver 集成,WebDriver 是由 Simon Stewart 开发的自动化测试工具。WebDriver 的主要优势之一是它控制浏览器本身,而不是作为 Javascript 应用程序在浏览器内部运行,这意味着像“同源”问题这样的主要绊脚石将不再是问题。

于 2009-07-22T22:41:29.383 回答
37

我们对两者都进行了测试,并决定使用 WaTiN。正如其他人所指出的,Selenium 确实有一些在 WaTiN 中没有的不错的功能,但是我们遇到了让 Selenium 工作的问题,一旦我们这样做了,它在运行测试时肯定比 WaTiN 慢。如果我没记错的话,我们遇到的设置问题源于 Selenium 有一个单独的应用程序来控制 WaTiN 在其中完成所有操作的实际浏览器。

于 2009-03-27T18:38:48.437 回答
30

我一直在尝试它们,这是我最初的想法......


等待

好的

  • 快速执行。
  • 脚本创建工具是独立的项目;我知道有 2 个:Wax(基于 Excel,托管在 CodePlex)和WatiN 测试记录(托管在 SourceForge)。两者都没有 Selenium IDE 强大。
  • 很好的 IE 支持。可以附加和分离到/从正在运行的实例。可以访问本机窗口句柄等(参见下面的脚本示例)。
  • NuGet 打包,易于在 .NET、Visual Studio 风格的环境中运行并保持更新。

坏的

  • 谷歌搜索 WatiN (watin xyz) 通常会导致谷歌推荐“watir xyz”。那里没有那么多文档。
  • (文档)很少,令人困惑;例如:乍一看,似乎没有对 CSS 选择器的原生支持。特别是因为有像“WatiNCssSelectorExtensions”这样的扩展库和许多关于替代技术的博客文章(例如将 jQuery/sizzle 注入页面)。在 Stack Overflow 上,我发现了Jeroen van Menen的评论,这表明存在原生支持。至少首席开发人员会花时间在 Stack Overflow 上 :)
  • 没有本机 XPath 支持。
  • 没有开箱即用的远程执行/基于网格的执行。

脚本示例 (C#)。你不能用 Selenium 做到这一点(至少我不知道):

class IEManager
{
    IE _ie = null;
    object _lock = new object();

    IE GetInstance(string UrlFragment)
    {
        lock (_lock)
        {
            if (_ie == null)
            {
                var instances = new IECollection(true);  //Find all existing IE instances
                var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
                _ie = match ?? new IE();
                if (match==null)  //we created a new instance, so we should clean it up when done!
                    _ie.AutoClose = true;
            }
        }

        return _ie;
    }
}

  • 比 WatiN 慢(特别是因为必须创建一个新进程)。
  • 内置 CSS 选择器/XPath 支持。
  • Selenium IDE 很好(不能说很好,但它是同类中最好的!)。
  • 感觉比 .NET 更像 Java……但实际上,它与编程语言无关;所有命令都发送到进程外“驱动程序”。驱动程序实际上是浏览器实例的“宿主”进程。所有通信都必须跨进程边界进行序列化输入/输出,这可能解释了与 WatiN 相关的速度问题。
  • 解耦过程——“驱动”和“控制”意味着更稳健、更复杂等,但也更容易创建网格/分布式测试环境。如果“分发”机制(即驱动程序和控制之间的通信)跨越 WebSphere 或其他现有的、健壮的消息队列管理器,我会非常喜欢它。
  • 开箱即用支持 chrome 和其他浏览器。

尽管如此,我最终还是选择了 WatiN。我主要是写小屏幕抓取应用,想用LINQPad做开发。附加到远程 IE 实例(我自己没有生成的实例)是一大优势。我可以在现有实例中摆弄……然后运行一些脚本……然后再次摆弄等等。这对 Selenium 来说更难,尽管我认为“暂停”可以嵌入到脚本中,在此期间我可以直接用浏览器玩。

于 2012-01-02T17:26:20.653 回答
18

最大的不同是 Selenium 支持不同的浏览器(不仅仅是 IE 或 FF,参见http://seleniumhq.org/about/platforms.html#browsers

此外,Selenium 有一个远程控制服务器(http://seleniumhq.org/projects/remote-control/),这意味着您不需要在运行测试代码的同一台机器上运行浏览器。因此,您可以测试您的 Web 应用程序。在不同的操作系统平台上。

一般来说,我会推荐使用 Selenium。几年前我用过WatiN,但我对它的稳定性并不满意(现在它可能已经改进了)。Selenium 对我来说最大的优点是您可以测试 Web 应用程序。在不同的浏览器上。

于 2009-03-28T09:08:47.083 回答
17

两者都不。使用海狸鼠。它包裹了硒。更耐用。https://github.com/featurist/coypu

更新 Ye Oliver 你是对的。好的,为什么更好?就个人而言,我发现 IE 的 Selenium 驱动程序特别脆弱 - 在 ajax 重网站上驱动 Selenium 进行单元测试时,我再次发现了许多“标准”驱动程序异常。

我有没有提到我想用 C# 编写脚本作为测试项目?是 持续构建部署中的验收测试。

那么 Coypu 处理上述问题。它是 Selenium 的包装器,允许测试夹具,例如,

browser.Visit("file:///C:/users/adiel/localstuff.htm")
browser.Select("toyota").From("make");
browser.ClickButton("Search");

...这将启动(可配置品牌的)浏览器并运行脚本。它适用于作用域区域并且非常可扩展。

GitHub 上有更多示例,正如 Olvier 下面提到的,Adrian 的视频非常棒。我认为这是在 .Net 世界中驱动基于浏览器的测试的最佳方式,并尝试遵循它的 Ruby 同名capybara

于 2011-07-19T15:33:59.500 回答
12

两个我都用过,感觉都还可以。我对 Selenium 表示赞同,因为它似乎有更好的 Ajax 支持。我相信 WaTiN 已经成熟了,虽然自从我上次使用它以来,它应该有同样的东西。

最重要的是您喜欢在哪个开发环境中工作?Selenium 和 Watin 有记录器,但 Selenium 在浏览器中,watin 在 Visual Studio 中。+ 和 - 对这两者都适用。

于 2009-01-06T17:19:19.780 回答
6

到目前为止,我们是一家纯粹的微软商店,为企业提供解决方案,并与 WatiN 合作。这在未来可能会改变。

作为最近的消息来源:

Microsoft 在MSDN 杂志 12/2010中打印了一个 BDD-Primer,它结合了 SpecFlow 和 WatiN(酷 BDD 行为驱动开发)。它的作者 Brandon Satrom (msft Developer Evangelist) 也在 2010 年 12 月发布了一个视频网络广播,详细 1:1 地教授他的上述发现。

Christian Hassa于 2011 年 4 月发布了一份关于使用 SpecLog、SpecFlow 和 Team Foundation Server(验收测试驱动开发/行为驱动开发)支持 ATDD/BDD的白皮书,他的团队构建了 SpecFlow。

于 2011-06-01T14:54:36.747 回答
5

我使用 Watin,但没有使用 Selenium。我可以说我在 Watin 上快速启动并运行,几乎没有问题。我想不出我想做的任何事情,我无法用它弄清楚。高温高压

于 2009-01-06T17:23:09.397 回答
4

我通常使用 Selenium,主要是因为我喜欢用于 FireFox 的 Selenium IDE 插件来记录我的测试的起点。

于 2009-01-06T17:20:18.313 回答
4

我推荐WebAii,因为这就是我所取得的成功,并且在使用它时我的抱怨很少。我从未尝试过 Selenium,而且我不记得使用 WaTiN 的次数不多,至少没有到可以让它成功工作的地步。我不知道有任何框架可以优雅地处理 Windows 对话框,尽管 WebAii 有一个用于实现您自己的对话框处理程序的接口。

于 2009-01-06T17:40:37.570 回答
4

我考虑使用两者。我使用 Selenium 的记录器在 FF 中构建了一些测试。我尝试在 Watin 中做同样的事情,发现Watin Recorder (2.0.9.1228) 对我们的网站完全没有价值。它似乎在 IE6 中呈现该站点——使我们的站点实际上无法用于记录。我们不支持 IE6。我找不到任何方法来更改它正在使用的浏览器。我只发现了一台 Watin Recorder。如果有不止一个,或者一个保持最新,请发表评论。

用于 Firefox 的 Selenium Recorder IDE 易于使用,并将测试移植到 C#。这不是很好。尽管阅读了一两篇有解决方法的博客文章,但我无法移植测试套件。因此,对生成的代码进行了一些操作。尽管如此,它仍然可以工作 90%,并且比替代方案要好。

就我的金钱/时间而言,Selenium 的优势在于易于构建新测试。IE 没有任何与Firebug一样好的开发工具栏,所以我开始在 Firefox 中进行开发,所以在 Firefox 中拥有一个好的工作记录器是一个巨大的好处。

我在这里的结论很像丘吉尔的民主名言:Selenium 是最糟糕的自动化 UI 测试形式。除了所有其他的。

于 2011-01-21T17:51:48.973 回答
3

冒着切线的风险,我推荐 Axe/WatiN。Ax 允许“手动”测试人员在不了解基础测试“语言”的情况下在 Excel 中编写测试。它确实需要一个“技术人员”来编写定制的操作(IE。今天我不得不做一个稍微复杂的表查找和交叉引用),但是一旦编写了这些操作就可以由非技术测试人员在测试中使用。

我还听说英国政府网关项目(我相信它有 6K+ 测试自动化测试)最近在一周内将所有测试从 Axe/Winrunner 移植到 Axe/Watin!而且许多测试都非常复杂——我知道几年前我在做这件事......

我目前正在研究 Selenium,因为潜在客户正在使用它。但我确实建议将 Axe 视为“工作马”工具之上的一层。

于 2010-01-08T07:19:50.480 回答
3

如果您必须访问 iframe、模态对话框和跨域 iframe,WatiN 是一种方法。Selenium 无法处理引发命令超时异常的 iframe。WatiN 你可以做更多的事情,特别是如果网站使用 IE 特定的东西,比如 ShowModalDialog 等。WatiN 可以很好地处理所有这些。我什至可以进行跨域 iframe 访问。

于 2010-04-13T22:00:01.077 回答
-1

如果你需要做 IE 和 FF 测试,你将不得不同时做这两个,但它们只会在演示测试中工作得很好。他们无法检测一个元素是否略微偏离,只是存在这些元素。我不知道有什么东西可以代替人眼进行 UI / 演示测试,尽管您可以做一些事情来帮助它(在每个步骤中截取页面的屏幕截图供用户查看)。

于 2009-01-06T17:20:57.810 回答