Geb - Как использовать двух пользователей/браузеров одновременно?

Я пишу автоматические тесты, используя geb+selenium. У меня есть много сценариев, требующих диалога между пользователями, например:

  1. Покупатель создать диалог
  2. Ответ продавца
  3. Ответ покупателя
  4. Продавец использует какой-то вариант
  5. Покупатель использует какой-то вариант... и т. д.

Как автоматизировать этот тест без выхода из системы/входа в систему перед каждым шагом? Я пытался запустить 2 браузера, но это оказалось намного сложнее, чем я думал.


person Maciek Drabicki    schedule 11.08.2017    source источник
comment
Пожалуйста, прочитайте Как спросить, особенно часть о минимальный воспроизводимый пример (MCVE) и Какой объем исследований ожидается? Это поможет вам отлаживать собственные программы и самостоятельно решать проблемы. Если вы сделаете это и все еще застряли, вы можете вернуться и опубликовать свой MCVE, что вы пробовали, и результат выполнения, включая любые сообщения об ошибках, чтобы мы могли лучше помочь вам. Также предоставьте ссылку на страницу и/или соответствующий HTML.   -  person JeffC    schedule 11.08.2017


Ответы (5)


Я бы посоветовал вам проявить настойчивость и найти способ упростить работу с несколькими экземплярами браузера (к сожалению, использование нескольких окон одного и того же экземпляра WebDriver, как предлагается в других ответах, будет недостаточным, поскольку сеанс будет разделен между ними). Это сложнее, чем должно быть, я согласен, но вы действительно пытаетесь проверить поведение системы при использовании двумя людьми, одновременно использующими разные браузеры.

Исторически сложилось так, что этот проект github, который пытается упростить работу с несколькими браузерами в одном тесте, распространяется в списке рассылки пользователей Geb, и я предлагаю вам взглянуть на него. Крейг Аткинсон также написал пост в блоге на основе этого проекта.

Учитывая, что это повторяется снова и снова, Гебу, вероятно, стоит предоставить какую-то поддержку для этого из коробки. К сожалению, я не придумал достаточно чистой реализации, которой я был бы доволен. Вы можете создать проблему в трекере Geb и начать обсуждение, поделившись своим опытом.

person erdi    schedule 13.08.2017

Напишите код входа в @BeforeSuite. Таким образом, вход в систему будет выполняться только один раз перед всеми тестовыми примерами, а затем добавить выход из системы в @AfterSuite, чтобы завершить набор выходом из системы.

person Ashish Deshmukh    schedule 11.08.2017
comment
Это не ответ на мой вопрос. Я могу сделать это, только если у меня есть один пользователь, но в моем случае это бессмысленно. - person Maciek Drabicki; 12.08.2017
comment
Ok. Теперь я понимаю. Вы пытаетесь открыть два браузера с разными логинами. Один будет покупателем, а другой продавцом. И вы хотите автоматизировать общение между ними. - person Ashish Deshmukh; 12.08.2017

Из книги geb вроде есть методы работы с несколькими окнами:

http://www.gebish.org/manual/current/#working-with-multiple-tabs-and-windows

Кажется, есть метод withNewWindow() и даже возможность получить все открытые окна. Однако нет опыта использования этого поведения.

person CommodoreBeard    schedule 11.08.2017

У вас есть 2 разных пользователя, у которых будут разные данные для входа, поэтому вы решили запустить 2 браузера, пока этот диалог происходит между двумя пользователями.

Я предполагаю, что вы написали тесты, которые делали что-то вроде:

login as buyer, open dialog
login as seller, respond
login as buyer, do stuff
login as seller, respond to stuff
etc...

Если бы это был я, я бы посмотрел на заглушение ответов. Итак, 2 отдельных теста: один для покупателя, где действия продавца заглушаются, и один для продавца, где действия покупателя заглушаются.

Однако возможно использование двух браузеров - см. этот вопрос: Selenium test для взаимодействия между двумя пользователями

person Rushby    schedule 11.08.2017

Вы можете открыть новый экземпляр браузера в Selenium с помощью команды WebDriver driver = new ChromeDriver(); (или FirefoxDriver или SafariDriver или...). Это откроет новый браузер в новом окне в новом сеансе.

person Community    schedule 11.08.2017