首页 文章

WatiN还是Selenium? [关闭]

提问于
浏览
145

我将很快开始编写一些自动化测试 . 似乎每个人都推荐WatiNSelenium . 您更喜欢哪种ASP.NET Web表单的自动化测试?哪些产品更适合您?

作为旁注,我注意到WatiN 2.0自2008年3月以来一直在CTP中,是否值得关注?

15 回答

  • 4

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

    作为更新的来源:

    微软在MSDN Magazine 12/2010中打印了一个BDD-Primer,结合了SpecFlow和WatiN(酷BDD行为驱动开发) . 它的作者Brandon Satrom(msft开发者宣传员)也在2010年12月发布了一篇详细的教学内容,详细讲述了他上述研究结果 .

    Christian Hassa从2011年4月开始支持带有SpecLog,SpecFlow和Team Foundation Server(验收测试驱动开发/行为驱动开发)的ATDD / BDD,其团队构建了SpecFlow .

  • 4

    我使用Watin,但没有使用Selenium . 我可以说我在Watin上快速起步并且几乎没有任何问题 . 我想不出任何我想做的事情,我无法弄明白 . HTH

  • 6

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

  • 30

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

    所以不用担心 .

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

  • 58

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

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

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

  • -1

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

  • 4

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


    WatiN

    好的

    • 快速执行 .

    • 脚本创建工具是独立的项目;我知道有2个:Wax(基于Excel,托管在CodePlex上)和WatiN Test Record(托管在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;
        }
    }
    

    Selenium

    • 比WatiN慢(特别是因为必须创建一个新进程) .

    • 内置CSS选择器/ XPath支持 .

    • Selenium IDE很好(不能说很好,但它是同类产品中最好的!) .

    • 感觉Java-ish比.NET-ish更多...但实际上,它是浏览器实例的's programming language agnostic; all commands are sent to an out-of-process ' Driver '. The driver is really a ' host'进程 . 所有通信必须跨进程边界进行序列化,这可能解释了与WatiN相关的速度问题 .

    • 解耦进程 - "Driver"和"Control"意味着更强大,更复杂等,但也更容易创建网格/分布式测试环境 . 如果"distribution"机制(即驱动程序和控制之间的通信)跨越WebSphere或其他现有的,健壮的消息队列管理器,本来会非常喜欢它 .

    • 支持chrome和其他开箱即用的浏览器 .

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

  • 3

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

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

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

  • 5

    都不是 . 使用海狸鼠 . 它包裹了Selenium . 更耐用 . https://github.com/featurist/coypu

    Update Ye Oliver你're right. Ok why' s它更好吗?我个人've found the Selenium driver for IE in particular to be very fragile - there'的一些'standard'驱动程序异常,我在ajax重型网站上驱动Selenium进行单元测试时再次发现这些异常 .

    我提到过我想用c#编写我的脚本作为测试项目吗?是接受在连续构建部署中进行测试 .

    好的Coypu处理上述问题 . 它是Selenium的包装器,允许测试夹具,如,

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

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

    有's more examples at GitHub and as Olvier below mentions, Adrian'的视频很棒 . 我认为's the best way to drive browser based tests in the .Net world and tries to follow it'的Ruby同名 capybara

  • 3

    我用过两者,他们似乎都工作正常 . 我的意见是Selenium,因为它似乎有更好的Ajax支持 . 我相信WaTiN已经成熟,但自从上次使用它以来它应该有相同的东西 .

    最重要的是你喜欢哪种开发环境? Selenium和Watin有录像机,但Selenium在浏览器中,而watin在视觉工作室 . 和那两个人 .

  • 16

    我推荐WebAii因为's what I' ve取得了任何成功,并且在使用它时我的抱怨很少 . 虽然WebAii有一个用于实现自己的对话框处理程序的界面,但我从未尝试过Selenium而且我不知道任何优雅处理Windows对话框的框架 .

  • 12

    我考虑过使用两者 . 我使用Selenium的录音机在FF中构建了一些测试 . 我试图在Watin做同样的事情,发现 Watin Recorder (2.0.9.1228) is completely worthless for our sites . 它似乎是在IE6中渲染网站 - 使我们的网站无法用于录制 . 我们没有找到任何方法来更改它正在使用的浏览器 . 我只在那里找到一台Watin Recorder . 如果有多个或一个保持更新,请发表评论 .

    用于Firefox的Selenium Recorder IDE易于使用,并且可以对C#进行端口测试 . 这不是很好 . 尽管阅读了一篇或两篇有解决方法的博客文章,但我无法移植测试套件 . 因此,对生成的代码进行了一些操作 . 不过,它的工作效率为90%,而且比替代品更好 .

    我的钱/时间, Selenium is superior just for the ease of building new tests . IE没有任何好的开发者工具栏,它们几乎和 Firebug 一样好,所以我开始在Firefox中进行开发,所以在Firefox中使用一个好的工作 Logger 是一个巨大的好处 .

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

  • 108

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

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

    我正在关注Selenium,因为潜在的客户使用它 . 但我确实建议将Ax看作“工作马”工具上方的一层 .

  • 18

    如果你必须访问iframe,模态对话框和跨域iframe WatiN是一种方法 . Selenium无法处理它抛出commandtimeout异常的iframe . WatiN你可以做更多的事情,特别是如果网站使用IE特定的东西,如ShowModalDialog等.WatiN处理所有这些非常好 . 我甚至可以进行跨域iframe访问 .

  • 37

    如果您需要进行IE和FF测试,则必须同时执行这两项操作,但它们只能用于演示文稿测试 . 他们无法检测一个元素是否略微偏离,只是元素存在 . 我不知道任何可以替代人眼进行UI /演示测试的东西,尽管你可以做一些事情来帮助它(在每一步都截取页面截图供用户查看) .

相关问题