WebDriver套件的顺序执行 - C#// Selenium Grid - All Local

时间:2012-08-28 17:48:58

标签: c# .net selenium-webdriver selenium-grid

我一直试图找到解决这个问题的好方法,但是还没有找到一个强有力的解决方案。我使用WebDriver和C#创建了一个测试套件,以便针对我们的站点运行我们的测试套件。我唯一剩下的问题是我想找到一种方法让完整套件在FireFox,Chrome和IE中执行。所以基本上,我需要在FireFox中完成测试,然后在Chrome中完成,最后在IE中完成。

我已经研究过Selenium Grid并且我正在解决这个问题并且正在解决所有类型的问题,因为我们没有任何虚拟机可供使用,我需要在我的本地运行它。因此,如果这个问题的一部分不可能,或者不是一个好的解决方案,那么有人能够指导我如何设置Selenium网格在我本地的3个主要浏览器中运行吗?我找到的所有文档都需要虚拟机设置。

1 个答案:

答案 0 :(得分:1)

我刚刚使用了NUnit的参数化测试。

我创建了一个枚举:

/// <summary>
/// Enum that holds references to different browsers used in testing.
/// </summary>
public enum BrowserTypeEnum
{
    /// <summary>
    /// Google Chrome.
    /// </summary>
    Chrome, 

    /// <summary>
    /// Mozilla Firefox.
    /// </summary>
    Firefox, 

    /// <summary>
    /// Internet Explorer.
    /// </summary>
    InternetExplorer
}

在TestFixture中调用它,如下所示:

/// <summary>
/// Tests related to browsing Google
/// </summary>
[TestFixture(BrowserTypeEnum.Chrome)]
[TestFixture(BrowserTypeEnum.Firefox)]
public class GoogleTests : AbstractTestFixture
{
}

在AbstractTestFixture中:

    /// <summary>
    /// Create's the browser used for this test fixture. 
    /// <para>
    /// Must always be called as part of the test fixture set up, not the base test fixtures.
    /// </para>
    /// <para>
    /// It is the actual test fixture's responsibility to launch the browser.
    /// </para>
    /// </summary>
    protected override void CreateBrowser()
    {
        switch (BrowserType)
        {
            case BrowserTypeEnum.Chrome:
                Browser = new ChromeDriver();
                break;
            case BrowserTypeEnum.Firefox:
                Browser = new FirefoxDriver();
                break;
            case BrowserTypeEnum.InternetExplorer:
                Browser = new IEDriver();
                break;
            default:
                break;
        }
    }

可能不是最好的解决方案,但我发现它非常易读。另一种方法是使用像Selenium Grid这样的东西,或者将驱动程序类型传递给NUnit并直接创建它,如下所示:

/// <summary>
/// Tests related to browsing Google
/// </summary>
[TestFixture(typeof(FirefoxDriver))]
public class GoogleTests : AbstractTestFixture
{
}

另一种方法是,如果您使用CI服务器解决方案,请创建配置设置以指示要用于测试的浏览器。让CI驱动程序重复测试三次,每次都编辑该配置设置。