WebDriver套件的顺序执行-C#//Selenium网格-所有本地

WebDriver套件的顺序执行-C#//Selenium网格-所有本地,c#,.net,selenium-webdriver,selenium-grid,C#,.net,Selenium Webdriver,Selenium Grid,一段时间以来,我一直在试图找到一个解决这个问题的好办法,但还没有找到一个强有力的解决办法。我使用WebDriver和C#创建了一个测试套件,以针对我们的站点运行我们的测试套件。我唯一剩下的问题是,我想找到一种方法,在FireFox、Chrome和IE中执行完整的套件。因此,基本上,我需要在FireFox中完成测试,然后在Chrome中完成,最后依次在IE中完成 我已经研究了Selenium网格,目前正在解决它的建立和运行问题,但是我面临着各种各样的问题,因为我们没有任何虚拟机可以使用,我需要在我

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


我已经研究了Selenium网格,目前正在解决它的建立和运行问题,但是我面临着各种各样的问题,因为我们没有任何虚拟机可以使用,我需要在我的本地计算机上运行它。因此,如果这个问题的这一部分不可能,或者不是一个好的解决方案,有人能告诉我如何设置Selenium grid以在我的本地计算机上的3个主要浏览器中运行吗?我找到的所有文档都需要虚拟机设置。

我刚刚使用了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
}
//
///保存对测试中使用的不同浏览器的引用的枚举。
/// 
公共枚举浏览器类型枚举
{
/// 
///谷歌浏览器。
/// 
铬,
/// 
///Mozilla Firefox。
/// 
火狐,
/// 
///Internet Explorer。
/// 
网络探险家
}
在TestFixture中调用它,如下所示:

/// <summary>
/// Tests related to browsing Google
/// </summary>
[TestFixture(BrowserTypeEnum.Chrome)]
[TestFixture(BrowserTypeEnum.Firefox)]
public class GoogleTests : AbstractTestFixture
{
}
//
///与浏览谷歌相关的测试
/// 
[TestFixture(BrowserTypeEnum.Chrome)]
[TestFixture(BrowserTypeEnum.Firefox)]
公共类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;
        }
    }
//
///创建用于此测试夹具的浏览器。
/// 
///必须始终作为测试夹具设置的一部分调用,而不是基本测试夹具。
/// 
/// 
///启动浏览器是实际测试夹具的责任。
/// 
/// 
受保护的覆盖无效CreateBrowser()
{
开关(浏览器型)
{
case BrowserTypeEnum.Chrome:
浏览器=新的ChromeDriver();
打破
case BrowserTypeEnum.Firefox:
浏览器=新的FirefoxDriver();
打破
案例浏览器类型Enum.InternetExplorer:
浏览器=新的IEDriver();
打破
违约:
打破
}
}
可能不是最好的解决方案,但我觉得它可读性很强。另一种方法是使用类似Selenium Grid的东西,或者可能将驱动程序类型传递到NUnit并直接创建,如下所示:

/// <summary>
/// Tests related to browsing Google
/// </summary>
[TestFixture(typeof(FirefoxDriver))]
public class GoogleTests : AbstractTestFixture
{
}
//
///与浏览谷歌相关的测试
/// 
[测试夹具(类型(FirefoxDriver))]
公共类GoogleTests:AbstractTestFixture
{
}
另一种选择是,如果使用CI服务器解决方案,请创建一个配置设置,以指示要用于测试的浏览器。让CI驱动程序重复测试三次,每次编辑该配置设置