【问题标题】:How do i use more than one browser in Nunit/Selenium GRID/C# Setup如何在 Nunit/Selenium GRID/C# 设置中使用多个浏览器
【发布时间】:2010-04-26 16:15:19
【问题描述】:

我有一个 Selenium GRID 设置,上面有各种用 C# 编写的浏览器(IE6、7、8、FF 3.5.6),并且它们单独运行良好。我还有一组 Selenium 测试设置,它们也可以很好地与我传递给它们的环境一起工作。我要求的是一种以语法方式设置不同单元测试以循环遍历 Selenium GRID 上所有可用浏览器的方法。

没有那么多浏览器,所以浏览器列表或数组之类的东西很好,但我想不出一种方法让 Setup 和 TearDown 在浏览器中循环。我正在使用带有 NUnit 的 C# 以及 Selenium Grid 和 3 个连接到它的 Selenium RC。

如果这意味着我可以循环浏览浏览器,我什至不介意更改为 MbUnit 之类的东西。

非常感谢

【问题讨论】:

    标签: c# nunit selenium selenium-grid


    【解决方案1】:

    一个(相当丑陋的)选项可能是在目标浏览器中传递的测试方法上使用 RowTest 扩展 - 其奖励是通过设置污染实际测试方法并可能减慢整个测试套件的速度。

    【讨论】:

      【解决方案2】:

      如果您使用MbUnit,您可以将Factory 属性绑定到一个变量。然后让Data Factory 为您想要自动化的每种浏览器返回一次。它将每个浏览器执行一次测试。

      http://www.gallio.org/wiki/doku.php?id=mbunit:data-driven_testing:factory

      【讨论】:

        【解决方案3】:

        如果您使用 NUnit,您可以在基础测试类中为您想要的所有浏览器指定 parameterized TextFixtures

        namespace Tests
        {
            [TestFixture("*firefox")]
            [TestFixture("*iexplore")]
            public abstract class Test
            {
                private static string _browser;
        
                protected Test()
                {
                }
        
                protected Test(string browser)
                {
                    SetBrowser(browser);
                }        
        
                public static void SetBrowser(string browser)
                {
                    _browser = browser;
                }
        
                [SetUp]
                public virtual void Setup()
                {
                    Selenium = new DefaultSelenium(localhost, 5555, _browser, "http://www.google.com/");
                    Selenium.Start();
                }
        
                [TearDown]
                public virtual void TearDown()
                {
                    Selenium.Stop();
                }
            }
        }
        

        而测试本身就是这样的:

        namespace Tests
        {
            [TestFixture]
            public class Test1 : Test
            {
                public Test1(string browser)
                {
                    SetBrowser(browser);
                }
        
                [Test]
                public void FirstTest()
                {
                    ...
                }
           }
        }
        

        2) 您可以通过PNunit 指定浏览器。缺点:每个测试都应该在 test.conf 文件中提及。优点:所有指定的浏览器将并行运行。为两个浏览器指定一个测试的 test.conf 文件示例:

        <TestGroup>
          <ParallelTests>  
            <ParallelTest>
              <Name>Tests</Name>
                <Tests>
        
                  <TestConf>
                    <Name>Test1FF</Name>
                    <Assembly>Test.dll</Assembly>
                    <TestToRun>Test.Tests.Test1</TestToRun>
                    <Machine>localhost:8080</Machine>
                    <TestParams>
                      <string>*firefox</string>
                    </TestParams>
                  </TestConf>
        
                  <TestConf>
                    <Name>Test1IE</Name>
                    <Assembly>Test.dll</Assembly>
                    <TestToRun>Test.Tests.Test1</TestToRun>
                    <Machine>localhost:8080</Machine>
                    <TestParams>
                      <string>*iexplore</string>
                    </TestParams>
                  </TestConf>
        
                </Tests>
              </ParallelTest>
            </ParallelTests>
        </TestGroup>
        

        基础测试类将是这样的:

        using NUnit.Framework;
        using PNUnit.Framework;
        
        namespace Tests
        {
            [TestFixture]
            public class Test
            {
                private string browser;
        
                protected Test()
                {
                }     
        
                [SetUp]
                public virtual void Setup()
                {
                    browser = PNUnitServices.Get().GetTestParams();
                    Selenium = new DefaultSelenium(localhost, 5555, browser, "http://www.google.com/");
                    Selenium.Start();
                }
        
                [TearDown]
                public virtual void TearDown()
                {
                    Selenium.Stop();
                }
            }
        }
        

        3) 您可以在 app.config 中指定浏览器并通过 TeamCity 进行更改。没有调查这个解决方案,所以不能给你一个例子。 希望前两个解决方案会有所帮助。

        【讨论】:

          猜你喜欢
          • 2012-06-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-24
          • 1970-01-01
          • 2019-11-10
          • 2011-06-29
          • 2011-03-22
          • 1970-01-01
          相关资源
          最近更新 更多