C# Specflow/Selenium测试在同一浏览器上同时运行(和干扰)

C# Specflow/Selenium测试在同一浏览器上同时运行(和干扰),c#,selenium,visual-studio-2015,selenium-chromedriver,specflow,C#,Selenium,Visual Studio 2015,Selenium Chromedriver,Specflow,我有一些用SpecFlow和Selenium编写的测试。我希望它们暂时按顺序运行。出于某种原因,它们同时在同一浏览器窗口上启动,并相互干扰。我确实希望测试可以重用浏览器窗口,但我显然不希望它们在同一窗口上同时运行 我为重用浏览器窗口设置了以下类: public class SeleniumContext { public ChromeDriver WebDriver { get; set; } public SeleniumContext() { Chro

我有一些用SpecFlow和Selenium编写的测试。我希望它们暂时按顺序运行。出于某种原因,它们同时在同一浏览器窗口上启动,并相互干扰。我确实希望测试可以重用浏览器窗口,但我显然不希望它们在同一窗口上同时运行

我为重用浏览器窗口设置了以下类:

public class SeleniumContext
{
    public ChromeDriver WebDriver { get; set; }
    public SeleniumContext()
    {
        ChromeOptions options = new ChromeOptions();
        options.SetLoggingPreference(LogType.Browser, LogLevel.All);
        options.AddArgument("no-sandbox");

        WebDriver = new ChromeDriver("./", options, TimeSpan.FromSeconds(240));
    }
}

[Binding]
public class BeforeAllTests
{
    private readonly IObjectContainer objectContainer;
    private static SeleniumContext seleniumContext;

    public BeforeAllTests(IObjectContainer container)
    {
        this.objectContainer = container;
    }

    [BeforeTestRun]
    public static void RunBeforeAllTests()
    {
        seleniumContext = new SeleniumContext();
    }

    [BeforeScenario]
    public void RunBeforeScenario()
    {
        objectContainer.RegisterInstanceAs<SeleniumContext>(seleniumContext);
    }

    [AfterTestRun]
    public static void afterRun()
    {
        seleniumContext.WebDriver.Quit();
    }
}
当我单击“全部运行”时,它们都会启动并在同一窗口上运行:


我不希望它们同时在同一窗口上运行。如何让它们按顺序运行?使用测试播放列表不是一个选项。我也愿意在不同的窗口上运行,但当它们按照自己的方式运行时,测试会相互干扰并导致失败。单独运行时,它们确实会成功运行。

解决方案是将以下内容添加到AssemblyInfo.cs:

[assembly: CollectionBehavior(DisableTestParallelization = true)]
这告诉xUnit不要并行运行测试


参考:

解决方案是将以下内容添加到AssemblyInfo.cs:

[assembly: CollectionBehavior(DisableTestParallelization = true)]
这告诉xUnit不要并行运行测试


参考资料:

您使用的是哪种测试运行程序?SpecFlow+Runner、NUnit、MSTest、xUnit?“我确实希望测试重新使用浏览器窗口”,是否有重新使用浏览器的原因?后来你提到“我也愿意在不同的窗口上运行”,这听起来与第一句话相矛盾。让这些测试同时在独立的浏览器上运行的解决方案是否足够?@mrfreester想要但不需要。我可以使用独立的浏览器实例。@AndreasWillich我正在使用xUnit运行测试。您使用的是哪个测试运行程序?SpecFlow+Runner、NUnit、MSTest、xUnit?“我确实希望测试重新使用浏览器窗口”,是否有重新使用浏览器的原因?后来你提到“我也愿意在不同的窗口上运行”,这听起来与第一句话相矛盾。让这些测试同时在独立的浏览器上运行的解决方案是否足够?@mrfreester想要但不需要。我可以使用独立的浏览器实例。@AndreasWillich我正在使用xUnit运行我的测试。非常好:)对于独立的浏览器解决方案,您还可以使驱动程序不是静态的,并在
BeforeCasenario
方法中设置它。干杯@弗里斯特先生,很高兴知道。这是一条我可以走的路线,这样我就可以同时执行测试,而不会受到干扰。谢谢@谢谢你。我试图用涉及的数据库设置并行测试,但没有用:,这至少帮助我按顺序运行它们。非常好:)对于单独的浏览器解决方案,您还可以使驱动程序不是静态的,并在
BeforeCasenario
方法中设置它。干杯@弗里斯特先生,很高兴知道。这是一条我可以走的路线,这样我就可以同时执行测试,而不会受到干扰。谢谢@谢谢你。我试图用一个涉及的数据库设置并行测试,但没有用,这至少帮助我按顺序运行它们。