Перейти к содержимому

cpmBugHunter

Регистрация: 23 дек 2014
Offline Активность: 05 июн 2021 13:47
*----

Мои темы

Запуск нескольких экземпляров IE

23 октября 2019 - 12:34

Приветствую, уважаемые форумчане!

 

Поиск по форуму выдал мне 4 темы, в которых я не нашел ответа на свой вопрос. Поэтому, создал новую. Но, если кто ткнёт носом в существующую тему, где будет ответ, то не только не обижусь, но и буду весьма благодарен  :smile:

 

Контекст: мне нужно написать тесты на сайт, который по требованию должен работать в IE (к всеобщему горю команды). Функционал примерно такой: один юзер на стороне клиента логинится на сайте и создает заказ. Создается некая карточка, которая этот заказ символизирует. А на стороне продавца юзер эту карточку двигает по стадиям (предложение, заказ оформлен, заказано, в пути и т.д.).

Соответственно, с одной карточкой могут работать 2 юзера одновременно.

 

Так вот для экономии времени тестирования, я хочу залогиниться двумя юзерами одновременно. Если это сделать в одном экземпляре браузера, то куки шарятся между вкладками, и при логине второго юзера первого сразу же выкидывает. Решение напрашивается само собой - открывать 2 экземпляра браузера. Хром это сделать позволяет без особых проблем. 

А вот в IE открывается одно окно, никаких действий не совершает, а висит молча. К тому же, оно не разворачивается на весь экран. Второе же просто не открывается.

 

Браузеры инициализирую так:

private static IWebDriver InitBrowser()
        {
            IWebDriver browser = new InternetExplorerDriver();
            browser.Manage().Cookies.DeleteAllCookies();
            browser.Manage().Window.Maximize();
            browser.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            browser.Manage().Timeouts().AsynchronousJavaScript = new TimeSpan(0, 3, 0);
            browser.Manage().Timeouts().PageLoad = new TimeSpan(0, 3, 0);
            return browser;
        }

IWebDriver browser1 = InitBrowser();        
IWebDriver browser2 = InitBrowser();

Текст вывода тоже не особо информативен:

Test Name:	TestMethod1
Test FullName:	Experiment.UnitTest1.TestMethod1
Test Source:	C:\GS\Projects Code\Experiment\Experiment\UnitTest1.cs : line 27
Test Outcome:	Failed
Test Duration:	0:00:00.0000001

Result Message:	
OneTimeSetUp: OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:54779/session/e6c3980f-a1a4-4f87-b6bf-264aaec0e627/cookie timed out after 60 seconds.
  ----> System.Net.WebException : The request was aborted: The operation has timed out.

Использую следующие пакеты:

 

NUnit: 3.12.0
Webdriver: 3.141.0.0

Webdriver.Support: 3.141.0.0

Selenium.InternetExplorer.WebDriver: 3.150.1

WebDriver.ChromeDriver: 26.14.313457.1

 

Browsers:

IE: 11.805.17763.0

Chrome: 78.0.3904.70 (Official Build) (64-bit)

 

Вопросы:

  1. Как правильно запустить 2 экземпляра IE, чтобы потом управлять ими по отдельности? Желательно, без Selenium Grid. Но если нельзя обойтись без него, то напишите пожалуйста, что никак без него.
  2. Почему не закрываются браузеры (ни Chrome, ни IE) после падения теста?  Вопрос снимается. Просто в тесте ничего не исполняется после строки Assert  :pardon:

 

Закрываю так:

browser1.Quit();
browser2.Quit();

Буду благодарен за любую помощь  :smile: