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

Фотография

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

webdriver C# IE

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 cpmBugHunter

cpmBugHunter

    Новый участник

  • Members
  • Pip
  • 45 сообщений
  • ФИО:Евгений
  • Город:Ростов-на-Дону


Отправлено 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:


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 23 октября 2019 - 12:53

Ответ на 1 вопрос - на одной машине никак.


  • 0

#3 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 23 октября 2019 - 14:38

 

 

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

к всеобщему счастью Вашей команды, никакой одновременности тут нет

 

один тест проверяет например создание заказа клиентом, а другие тесты проверяют обработку уже созданного заказа, по одному тесту на каждый переход


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 23 октября 2019 - 14:42

Евгений, хочет -

Так вот для экономии времени тестирования, я хочу залогиниться двумя юзерами одновременно.

 

Совместить и то и то. Да, чем-то придётся жертвовать.


  • 0

#5 cpmBugHunter

cpmBugHunter

    Новый участник

  • Members
  • Pip
  • 45 сообщений
  • ФИО:Евгений
  • Город:Ростов-на-Дону


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

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

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

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

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

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

 

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

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

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

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

 

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


  • 0

#6 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 23 октября 2019 - 15:55

 

Но с карточкой работают поочередно то юзер1, то юзер2:

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

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

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

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

вот и пишите отдельные тесты для каждого "продвижения по процессу"

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

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

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

и так далее

 

 

 

Ведь при тестировании вручную мы так и делаем

автоматизированное тестирование очень сильно отличается от ручного


  • 0

#7 cpmBugHunter

cpmBugHunter

    Новый участник

  • Members
  • Pip
  • 45 сообщений
  • ФИО:Евгений
  • Город:Ростов-на-Дону


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

 

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

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

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

и так далее

 

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

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

 

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

 

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

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


  • 0

#8 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 23 октября 2019 - 20:53

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


  • 0

#9 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 23 октября 2019 - 21:32

получается в данном случае тесты через интерфейс вообще не нужны, а нужны только интеграционные тесты

 

вот их и пишите

 

ну и компонентные тесты для самих "карточек"


  • 0

#10 cpmBugHunter

cpmBugHunter

    Новый участник

  • Members
  • Pip
  • 45 сообщений
  • ФИО:Евгений
  • Город:Ростов-на-Дону


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

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

 

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


  • 0

#11 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 октября 2019 - 13:48

Вы думаете что тут прямо стотыщ человек сидит и все хотят вам ответить...


  • 0



Темы с аналогичным тегами webdriver, C#, IE

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных