我将很快开始为我们的演示文稿编写一些自动化测试。看来大家都推荐WatiN和Selenium。对于 ASP.NET Web 表单的自动化测试,您更喜欢哪个?这些产品中哪个更适合您?
作为旁注,我注意到自 2008 年 3 月以来,WatiN 2.0 一直在 CTP 中,这有什么要担心的吗?
只想说,我目前正在努力在 2009 年第一季度的某个地方发布 WatiN 2.0 的 beta 版本。这将是对当前 CTP 2.0 版本的重大升级,并且基本上将为您提供与自动化 FireFox 和 IE 相同的功能1.3.0 版提供了 IE 自动化。
所以不用担心。
希望这有助于您做出选择 Jeroen van Menen Lead dev WatiN
如果您希望对一个将继续得到社区改进和支持的框架进行严肃的长期投资,那么 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 应用程序在浏览器内部运行,这意味着像“同源”问题这样的主要绊脚石将不再是问题。
我们对两者都进行了测试,并决定使用 WaTiN。正如其他人所指出的,Selenium 确实有一些在 WaTiN 中没有的不错的功能,但是我们遇到了让 Selenium 工作的问题,一旦我们这样做了,它在运行测试时肯定比 WaTiN 慢。如果我没记错的话,我们遇到的设置问题源于 Selenium 有一个单独的应用程序来控制 WaTiN 在其中完成所有操作的实际浏览器。
我一直在尝试它们,这是我最初的想法......
等待
好的
坏的
脚本示例 (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。我主要是写小屏幕抓取应用,想用LINQPad做开发。附加到远程 IE 实例(我自己没有生成的实例)是一大优势。我可以在现有实例中摆弄……然后运行一些脚本……然后再次摆弄等等。这对 Selenium 来说更难,尽管我认为“暂停”可以嵌入到脚本中,在此期间我可以直接用浏览器玩。
最大的不同是 Selenium 支持不同的浏览器(不仅仅是 IE 或 FF,参见http://seleniumhq.org/about/platforms.html#browsers。
此外,Selenium 有一个远程控制服务器(http://seleniumhq.org/projects/remote-control/),这意味着您不需要在运行测试代码的同一台机器上运行浏览器。因此,您可以测试您的 Web 应用程序。在不同的操作系统平台上。
一般来说,我会推荐使用 Selenium。几年前我用过WatiN,但我对它的稳定性并不满意(现在它可能已经改进了)。Selenium 对我来说最大的优点是您可以测试 Web 应用程序。在不同的浏览器上。
两者都不。使用海狸鼠。它包裹了硒。更耐用。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
两个我都用过,感觉都还可以。我对 Selenium 表示赞同,因为它似乎有更好的 Ajax 支持。我相信 WaTiN 已经成熟了,虽然自从我上次使用它以来,它应该有同样的东西。
最重要的是您喜欢在哪个开发环境中工作?Selenium 和 Watin 有记录器,但 Selenium 在浏览器中,watin 在 Visual Studio 中。+ 和 - 对这两者都适用。
到目前为止,我们是一家纯粹的微软商店,为企业提供解决方案,并与 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。
我使用 Watin,但没有使用 Selenium。我可以说我在 Watin 上快速启动并运行,几乎没有问题。我想不出我想做的任何事情,我无法用它弄清楚。高温高压
我通常使用 Selenium,主要是因为我喜欢用于 FireFox 的 Selenium IDE 插件来记录我的测试的起点。
我推荐WebAii,因为这就是我所取得的成功,并且在使用它时我的抱怨很少。我从未尝试过 Selenium,而且我不记得使用 WaTiN 的次数不多,至少没有到可以让它成功工作的地步。我不知道有任何框架可以优雅地处理 Windows 对话框,尽管 WebAii 有一个用于实现您自己的对话框处理程序的接口。
我考虑使用两者。我使用 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 测试形式。除了所有其他的。
冒着切线的风险,我推荐 Axe/WatiN。Ax 允许“手动”测试人员在不了解基础测试“语言”的情况下在 Excel 中编写测试。它确实需要一个“技术人员”来编写定制的操作(IE。今天我不得不做一个稍微复杂的表查找和交叉引用),但是一旦编写了这些操作就可以由非技术测试人员在测试中使用。
我还听说英国政府网关项目(我相信它有 6K+ 测试自动化测试)最近在一周内将所有测试从 Axe/Winrunner 移植到 Axe/Watin!而且许多测试都非常复杂——我知道几年前我在做这件事......
我目前正在研究 Selenium,因为潜在客户正在使用它。但我确实建议将 Axe 视为“工作马”工具之上的一层。
如果您必须访问 iframe、模态对话框和跨域 iframe,WatiN 是一种方法。Selenium 无法处理引发命令超时异常的 iframe。WatiN 你可以做更多的事情,特别是如果网站使用 IE 特定的东西,比如 ShowModalDialog 等。WatiN 可以很好地处理所有这些。我什至可以进行跨域 iframe 访问。
如果你需要做 IE 和 FF 测试,你将不得不同时做这两个,但它们只会在演示测试中工作得很好。他们无法检测一个元素是否略微偏离,只是存在这些元素。我不知道有什么东西可以代替人眼进行 UI / 演示测试,尽管您可以做一些事情来帮助它(在每个步骤中截取页面的屏幕截图供用户查看)。