У меня есть несколько тестов, написанных на 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();
}
}
Пример класса Steps:
[Binding]
public sealed class LogInSteps
{
private ChromeDriver driver;
public LogInSteps(SeleniumContext seleniumContext)
{
this.driver = seleniumContext.WebDriver;
}
//step definitions here
}
Когда я нажимаю «Выполнить все», они оба запускаются и работают в одном окне:
Я не хочу, чтобы они запускались одновременно в одном окне. Как заставить их работать последовательно? Использование тестового плейлиста не вариант. Я бы также согласился работать в разных окнах, но когда они ведут себя так, как они, тесты мешают друг другу и приводят к их сбою. Они успешно работают при индивидуальном запуске.