Задать вопрос
@itcry

С# Как открыть новую вкладку в WebDriver из асинхронного метода?

Провожу некоторые тесты с сайтом с помощью 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 копии браузера при старте программы, а при нажатии на кнопку "Проверить" хочу сделать так, что бы каждый тест в своем уже открытом браузере открывал новую вкладку, проводил в ней тесты и закрывал вкладку. Этим я хочу добиться сокращения времени на следующие тесты, если я меняю какие-то входные данные.
Есть ли какой-то пример, как лучше это сделать?
Сейчас если я за пределами асинхронного метода объявляю браузер, то в асинхронном методе этот браузер мне недоступен и я не могу в нем открыть новую вкладку для работы.
Подскажите, люди добрые))
  • Вопрос задан
  • 244 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы