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

Публикации cpmBugHunter

4 публикаций создано cpmBugHunter (учитываются публикации только с 29 марта 2023)


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

Отправлено автор: cpmBugHunter 24 октября 2019 - 09:13 в Selenium - Functional Testing

:smile: пора открывать тотализатор и принимать ставки ?

 

Нет, я просто думал, может кто-то еще напишет, что действительно нельзя. Ну или просто поплюсуют ответ от BabyRoot. Тогда я бы понял, сколько людей согласны с этой версией...




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

Отправлено автор: cpmBugHunter 23 октября 2019 - 16:54 в Selenium - Functional Testing

 

в первом тесте юзер1 создает карточку, тут же после теста карточка удаляется через РЕСТ АПИ

во втором тесте через РЕСТ АПИ карточка создается, юзер2 что-то в ней делает и продвигает дальше, карточка удаляется через РЕСТ АПИ

в третьем тесте через РЕСТ АПИ карточка создается и продвигается в нужный статус, юзер1 соглашается и продвигает, карточка удаляется через РЕСТ АПИ

и так далее

 

Я понимаю, что так делать автоматизацию ПРАВИЛЬНО. Но, к сожалению, у заказчика другие взгляды. Им тестирование нужно БЫСТРО.

К тому же, несмотря на то, что проект довольно старый, документации по API нет. Да там и не REST вовсе. Плюс, если бы я мог запросто двигать карточку по стейджам через API, я бы, наверно, не брался щас за UI тесты...

 

В общем, можно долго говорить о том, что вот нехорошо это, когда API не описан. Мол, сначала надо бы этим заняться. Ну или через Fiddler срисовать запросики с этими простынями XML в качестве тушки... Потом ответики, чтобы понимать, что кроме твоих параметров карточки там еще тонна всякого гов контента прилетает. Но на это как всегда нет времени, денег и политической воли.

 

Вот я и хотел написать тесты, чтобы они хотя бы на уровне пользовательских действий прогоняли карточку. В условиях цейтнота этого было бы достаточно.

Поэтому вопрос остается открытым: можно ли открыть одновременно 2 экземпляра браузера IE через webdriver на одной машине? Пока вот 1:0 в пользу "никак"




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

Отправлено автор: cpmBugHunter 23 октября 2019 - 15:22 в Selenium - Functional Testing

Про одновременность я, может, и погорячился. Но с карточкой работают поочередно то юзер1, то юзер2:

юзер1 карточку создает

юзер2 на своей стороне её видит, заходит в нее, что-то в ней делает и продвигает дальше

юзер1 видит изменения, соглашается с ними и продвигает дальше.

И так далее по процессу.

 

Но, чтобы не перелогиниваться то как юзер1, то как юзер2 я и хотел залогиниться одновременно. А потом работать так:

browser.SwitchTo().Window(browser1) //и совершить действия

browser.SwitchTo().Window(browser2) //и совершить другие действия

browser.SwitchTo().Window(browser1) //и совершить третьи действия

 

Ведь при тестировании вручную мы так и делаем: открываем окно в IE и логинимся как юзер1, а потом открываем другое окно в режиме инкогнито и логинимся как юзер2. А потом, поочередно переключаясь между окнами, процессим карточку.




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

Отправлено автор: cpmBugHunter 23 октября 2019 - 12:34 в Selenium - Functional Testing

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

 

Поиск по форуму выдал мне 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: