WatiN还是Selenium?[关闭]


148

我将很快开始对我们演示文稿的一些自动化测试进行编码。似乎每个人都推荐WatiNSelenium。您更喜欢ASP.NET Web表单的自动化测试中的哪一个?这些产品中哪个更适合您?

作为附带说明,我注意到WatiN 2.0自2008年3月以来一直在CTP中使用,是否有什么需要关注的?


30
我认为这个问题不应该解决。这对我和其他开发人员很有用(请参阅赞)。这样的问题是我需要Stackoverflow的原因之一。我希望我可以否决管理员的决定。
Maxim Eliseev 2013年

7
我不知道为什么这个问题被关闭了。这是很有建设性的。我正在研究两者,并且想知道他们
的区别

14
没有建设性的???...这个网站被白痴控制得太多了。
罗纳德·麦当劳

Answers:


108

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

因此,您无需担心。

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


23
@jcollum对不起,但我不同意给出-1。Jeroen仅回答了第二个问题“作为旁注...”。如果不是产品的首席开发人员,谁将更有资格对此做出回应。仅将此响应标记为最佳答案可能会有疑问。
Henry99 2011年

1
@ Henry99作为问题或单独问题下的评论更合适。这里的核心问题是“ A或B”。A或B的作者不应该回答这样的问题,因为很明显,他们将有偏见。
jcollum

3
@jcollum Jeroen没有提及他的产品与硒的质量,也没有说任何可能被偏向一个方向或其他方向的话。也许您没有阅读问题的第二部分,但是该项目的首席开发人员无疑是回答该问题的最有资格的人。
Grinn 2011年

2
@Grinn:我在您的评论中提到了这一点,您读过吗?他没有回答主要问题(Watin或Selenium),而是要完全解决一个单独的问题。
jcollum

不错的答案...
Mohsin Awan

58

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

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

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


1
Selenium目前似乎是一个更成熟的项目,再加上Google正在使用它是一个非常可靠的建议(我也尝试过Watin并遇到了问题-尽管从未尝试过Selenium)
Piotr Owsiak 2012年

37

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


4
+1可获取性能说明和实际使用情况。
杰里米·麦基

我意识到了同样的问题:#1性能不太好,#1测试在Java服务器上运行(需要在[TestSetup]中进行设置)。
Peter Gfader

18
这不再是一个问题-Selenium 2.0附带了WebDriver库,该库可以直接控制浏览器,而不仅仅是通过Java服务器。
伊戈尔·布雷希

2
我没有尝试过Selenium,但是Watin遇到了问题。我没有明显的原因使测试突然停止,而且我随机抛出了COM错误(至少我找不到任何模式)。
Piotr Owsiak'4年

30

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


瓦丁

善良

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

坏人

  • 谷歌搜索WatiN(watin xyz)通常会导致Google推荐“ 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相关的速度问题。
  • 解耦的过程-“驱动程序”和“控制”意味着更强大,更复杂等,但也更易于创建网格/分布式测试环境。如果“分布”机制(即,Driver&Control之间的通信)跨WebSphere或其他现有的,健壮的消息队列管理器,那么它本来会真的很喜欢。
  • 开箱即用地支持chrome和其他浏览器。

尽管如此,我还是和WatiN一起去了。我主要打算编写小的屏幕抓取应用程序,并希望使用LINQPad进行开发。附加到远程IE实例(我没有生成自己的实例)是一大优势。我可以在一个现有的实例中摆弄……然后运行一些脚本……然后再次摆弄,依此类推。用Selenium很难做到这一点,尽管我认为可以在脚本中嵌入“暂停”直接在浏览器中摆弄。


2
感谢您的详细比较。
山姆

18

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

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

通常,我建议使用Selenium。几年前,我曾使用过WatiN,但是我对它的稳定性不满意(到目前为止,它已经有所改善)。对我而言,Selenium最大的优点是您可以测试Web应用程序。在不同的浏览器上。


3
硒有不同的浏览器支持 -现在给予我们支持的Chrome,Safari浏览器,FF和IE 6,7部外重要的是,和8
托尼·恩尼斯

17

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

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

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

科普处理上述问题。它是Selenium的包装材料,可用于测试夹具,例如,

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

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

GitHub上还有更多示例,正如下面的Olvier所提到的,Adrian的视频很棒。我认为这是在.Net世界中推动基于浏览器的测试的最佳方法,并尝试遵循其Ruby命名capybara


这个答案需要更多注意:Coypu是您和自动化浏览器测试之间缺少的链接!惊人!去看看吧!如果您曾经与Selenium(或WatiN)挣扎过,请尝试使AJAX或元素正确找到-Coypu是您祈祷的答案;-)
Oliver

感谢@penderi添加更多详细信息:-)
Oliver

12

我都用过,它们似乎都工作正常。我的头是Selenium,因为它似乎有更好的Ajax支持。我相信WaTiN已经成熟,尽管自从上次使用以来,它应该具有相同的功能。

最大的事情就是您想进入哪个开发环境?Selenium和Watin有记录器,但是Selenium在浏览器中,而watin在Visual Studio中。这两个都是+和-。


6

到现在为止,我们还是一家纯粹的Microsoft Shop,可为WatiN提供企业解决方案。将来可能会改变。

作为最近的资料:

Microsoft在MSDN Magazine 12/2010中印制了BDD-Primer,它结合了SpecFlow和WatiN(很酷的BDD-行为驱动的开发)。其作者Brandon Satrom(msft开发人员传播者)还在2010年12月发布了一个视频网络广播,详细讲解了上述发现,并按1:1的比例进行了讲授。

克里斯蒂安·哈萨Christian Hassa)于2011年4月4日发布了白皮书,该白皮书通过SpecLog,SpecFlow和Team Foundation Server(验收测试驱动开发/行为驱动开发)支持ATDD / BDD ,该团队的成员构建了SpecFlow。


5

我用的是Watin,但还没有用过Selenium。我可以说我在Watin上快速启动并运行,几乎没有问题。我想不出自己想做的任何事情。高温超导


4

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


您知道支持什么版本的FF吗?我没有爱就尝试了FF6和FF5的IDE。我本来希望没有支持6,但5令我感到惊讶。
MikeJ 2011年

4

我推荐WebAii,因为这是我取得的任何成功,并且使用它时我的抓地力很少。我从没尝试过Selenium,我也不记得使用WaTiN了,至少到我无法成功使用它的程度。尽管WebAii具有用于实现自己的对话框处理程序的接口,但我不知道任何可以优雅地处理Windows对话框的框架。


我想给+1来提出第三种选择,但是我要说-1来不提供有关该产品的任何体验以及它与其他两种产品的比较。
杰夫·马丁

Windows对话框= js警报框?如果是这样,硒对此表示支持。自从发现那些警报框令人讨厌之后,我再也没有进行过测试。
jcollum

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中拥有良好的记录器是一个巨大的收获。

我在这里的结论很像丘吉尔(Churchill)的民主言论:硒是自动化UI测试的最差形式。除了其他所有。


能够让QA团队使用FF插件创建“手动”测试,并让开发人员将生成的C#测试移植到我们的基础架构中,从而使结论很简单。WaitIn看起来很公平-但是在这种情况下,我们的客户无法选择“艰苦”的构建测试过程(根据WaitIn项目页面上的视频)。
sonstabo 2011年

@sonstabo:这就是我希望的方向。有一天,当我们有一个QA部门:puppydogeyes:
jcollum

3

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

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

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


3

如果您必须访问iframe,模态对话框和跨域iframe,则可以使用WatiN。Selenium无法处理它抛出命令超时异常的iframe。WatiN您可以做更多的事情,特别是如果网站使用IE特定的东西(例如ShowModalDialog等)。WatiN可以很好地处理所有这些问题。我什至可以进行跨域iframe访问。


-1

如果您需要进行IE和FF测试,则必须同时做这两项工作,但是它们对于演示文稿测试来说效果很好。他们无法检测到某个元素是否略有偏离,只是存在这些元素。我不知道有什么可以代替UI /演示测试的人眼的,尽管您可以做一些事情来辅助它(在每个步骤中截取页面的屏幕快照,以供用户查看)。


“如果您需要进行IE和FF测试,则必须同时进行这两项工作” – Selenium不能同时进行吗?
marcumka,2009年

1
硒rc可以做野生动物园和ff
Redsquare 2009年

您只能以FF录制,但可以使用RC来控制IE和FF(可能还有其他)
Jeff Martin,2009年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.