Провожу некоторые тесты с сайтом с помощью C# + Selenium. Запускаю одновременно 4 теста в асинхронном режиме:
Task t1 = Task.Run(() => Check1());
Task t2 = Task.Run(() => Check2());
Task t3 = Task.Run(() => Check3());
Task t4 = Task.Run(() => Check3());
await Task.WhenAll(t1, t2, t3, t4);
В данный момент в каждом из методов Check1, Check2, etc открывается отдельный браузер и тест происходит в нем:
IWebDriver Browser1;
ChromeDriverService service = ChromeDriverService.CreateDefaultService();
service.HideCommandPromptWindow = true;
ChromeOptions option = new ChromeOptions();
option.AddArgument("--headless");
Browser1 = new ChromeDriver(service, option);
После окончания теста браузер закрывается.
Все работает, все хорошо. В моей программе (WindowsForm) есть поле, в которое я ввожу некоторые значения, от которых может меняться результат теста. Проблема в том, что сейчас после каждого нажатия кнопки "Проверить" я получаю запуск 4 копий браузера, проведения в них тестов и закрытия браузера. На это уходит время.
Я хочу запускать 4 копии браузера при старте программы, а при нажатии на кнопку "Проверить" хочу сделать так, что бы каждый тест в своем уже открытом браузере открывал новую вкладку, проводил в ней тесты и закрывал вкладку. Этим я хочу добиться сокращения времени на следующие тесты, если я меняю какие-то входные данные.
Есть ли какой-то пример, как лучше это сделать?
Сейчас если я за пределами асинхронного метода объявляю браузер, то в асинхронном методе этот браузер мне недоступен и я не могу в нем открыть новую вкладку для работы.
Подскажите, люди добрые))