我将很快开始编写一些自动化测试.似乎每个人都推荐WatiN和Selenium.您更喜欢哪种自动测试ASP.NET Web表单?哪些产品更适合您?
作为旁注,我注意到WatiN 2.0自2008年3月以来一直在CTP中,是否值得关注?
只是想说我目前正在努力在2009年第一季度的某个地方试用WatiN 2.0.这将是对当前CTP 2.0版本的重大升级,并且基本上会给你相同的功能来自动化FireFox和IE作为版本1.3.0提供自动化IE.
所以不用担心.
希望这有助于您做出选择Jeroen van Menen Lead dev WatiN
如果您希望在一个将继续得到社区改进和支持的框架中进行严肃的长期投资,Selenium可能是您最好的选择.例如,我刚刚在Matt Raible的博客上看到了这个信息:
截至周五,谷歌有超过50支团队每天在内部Selenium Farm上进行超过51,000次测试.96%的这些测试由Selenium RC和Farm机器正确处理.其他4%部分是由于RC错误,部分原因是测试错误,但隔离原因可能很困难.Selenium已被用作Google内部Web应用程序功能测试的主要技术.这是个好消息.
最近我还参加了一次Selenium聚会,了解到Google正在投入大量资源来改进Selenium并将其与WebDriver集成,后者是由Simon Stewart开发的自动化测试工具.WebDriver的一个主要优点是它控制浏览器本身而不是作为Javascript应用程序在浏览器中运行,这意味着像"同源"问题这样的主要障碍将不再是问题.
我们测试了两者并决定使用WaTiN.正如其他人所指出的那样,Selenium确实有一些在WaTiN中找不到的好功能,但我们遇到了让Selenium工作的问题,一旦我们这样做,它在运行测试时肯定比WaTiN慢.如果我没记错的话,我们遇到的设置问题源于Selenium有一个单独的应用程序来控制WaTiN正在处理的所有事情的实际浏览器.
我一直在尝试他们两个,这是我最初的想法......
华廷
好的
快速执行.
脚本创建工具是独立的项目; 我知道有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-ish感觉更多Java-ish ...但实际上,它是编程语言不可知的; 所有命令都发送到进程外"驱动程序".驱动程序实际上是浏览器实例的"主机"进程.所有通信必须跨进程边界序列化/输出,这可能解释了与WatiN相关的速度问题.
解耦过程 - "驱动程序"和"控制"意味着更强大,更复杂等,但也更容易创建网格/分布式测试环境.如果"分发"机制(即驱动程序和控制之间的通信)跨越WebSphere或其他现有的,健壮的消息队列管理器,那么本来真的很喜欢它.
支持chrome和其他开箱即用的浏览器.
尽管如此,我最终还是和WatiN一起去了; 我主要打算编写小屏幕抓取应用程序,并希望使用LINQPad进行开发.附加到远程IE实例(我没有自己生成的实例)是一个很大的优点.我可以在一个现有的实例中摆弄...然后运行一些脚本...然后再次操作等等.这对Selenium来说更难,尽管我认为"暂停"可以嵌入脚本中,在此期间我可以直接用浏览器搞砸.
最大的区别是Selenium支持不同的浏览器(不仅仅是IE或FF,请参阅http://seleniumhq.org/about/platforms.html#browsers.
此外,Selenium还有一个远程控制服务器(http://seleniumhq.org/projects/remote-control/),这意味着您无需在运行测试代码的同一台机器上运行浏览器.因此,您可以测试您的Web应用程序.在不同的OS平台上.
一般来说,我建议使用Selenium.几年前我使用过WatiN,但我对它的稳定性并不满意(它现在可能已经改进了).对我来说,Selenium的最大优点是你可以测试Web应用程序.在不同的浏览器上
都不是.使用海狸鼠.它包裹了Selenium.更耐用.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在视觉工作室.+和 - 两者.
到目前为止,我们是一家纯粹的微软商店,为企业提供解决方案,并与WatiN合作.这可能在将来发生变化.
作为更新的来源:
Microsoft在MSDN Magazine 12/2010中打印了一个BDD-Primer,它结合了SpecFlow和WatiN(酷BDD行为驱动开发).它的作者Brandon Satrom(msft Developer Evangelist)也在2010年12月发布了一个视频网络广播,详细讲述了他上述发现的1:1.
2011年4月有一份关于支持ATDD/BDD 的白皮书,其中包括来自Christian Hassa的 SpecLog,SpecFlow和Team Foundation Server(验收测试驱动开发/行为驱动开发),他的团队构建了SpecFlow.
我使用Watin,但没有使用Selenium.我可以说我在Watin上快速起步并且几乎没有任何问题.我想不出任何我想做的事情,我无法弄明白.HTH