我很快就会开始为我们的演示文稿编写一些自动化测试代码。看来大家都推荐 等待. 。对于 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 领导开发WatiN

其他提示

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

  

截至周五,谷歌拥有超过50支球队   每天运行超过51K的测试   内部硒农场。其中96%   测试由Selenium RC和   农场机器正确。另一个   4%部分是由于RC错误造成的   测试错误,但隔离   原因可能很困难。硒有   被采纳为主要技术   用于网络的功能测试   Google中的应用程序。那就是   好消息。

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

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

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


等待

好的

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

坏处

  • 谷歌搜索 WatiN (watin xyz) 通常会导致谷歌推荐“watir xyz”。那里没有那么多文档。
  • (文档)很少,令人困惑;例如:乍一看,CSS 选择器似乎没有原生支持。特别是因为有像“WatiNCssSelectorExtensions”这样的扩展库和许多关于替代技术的博客文章(例如将 jQuery/sizzle 注入页面)。在 Stack Overflow 上,我发现了一条评论 杰罗恩·范梅宁 这表明有本机支持。至少首席开发人员花时间在 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 很好(不能说很好,但它是同类中最好的!)。
  • 感觉更像是 Java 风格而不是 .NET 风格……但实际上,它与编程语言无关;所有命令都发送到进程外“驱动程序”。驱动程序实际上是浏览器实例的“主机”进程。所有通信都必须跨进程边界序列化输入/输出,这可能解释了与 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应用程序。在不同的操作系统平台上。

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

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

更新奥利弗,你是对的。好的,为什么更好?就我个人而言,我发现 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合作。这可能在将来发生变化。

作为最近的消息来源:

微软打印在 MSDN Magazine 12/2010 是一个BDF-Primer,结合了SpecFlow和WatiN(酷BDD行为驱动开发)。它的作者Brandon Satrom(msft Developer Evangelist)也在2010年12月发布了一个视频网络广播上详细讲述了他的上述发现。

从2011年4月起,有关于支持ATDD的白皮书 / BDD与SpecLog,SpecFlow和Team Foundation Server(验收测试驱动开发/行为驱动开发)来自 Christian Hassa ,他的团队建立了SpecFlow。

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

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

我建议 WebAii ,因为这是我在使用它时所取得的成功我的抱怨很少。我从来没有尝试过Selenium,我也不记得使用WaTiN了,至少没有让我能够成功地使用它。虽然WebAii有一个用于实现自己的对话框处理程序的界面,但我不知道任何框架可以优雅地处理Windows对话框。

我考虑过使用两者。我使用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测试形式。除了所有其他的。

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top