Как я могу использовать один и тот же chromedriver в нескольких stepDefPages для нескольких сценариев и без перезапуска моего драйвера? - PullRequest
1 голос
/ 17 апреля 2019

Я хочу провести тестирование в своем приложении, поэтому первый сценарий - это аутентификация. После этого мне нужно выполнить тест на следующей странице, которая является домашней страницей, так как я могу использовать тот же драйвер без перезапуска моего драйвера в второй сценарий? Я хочу начать прямо с: @given Я на главной странице!

У меня есть класс для stepdefauthentification, другой для stepdefSearchCustomer, так как я могу использовать свой драйвер из первого класса во втором? Инициализация chromedriver находится на первой странице, и я даже не могу перезапустить мой драйвер, выполнив: driver.geturl ("") на второй, потому что сначала нам нужно аутентифицироваться, чтобы отобразилась домашняя страница.

, что означает, что мне нужно восстановить драйвер с помощью его URL-адреса из первого сценария, а затем начать оттуда во втором.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019
  1. Ваши сценарии НЕ должны зависеть друг от друга, ваши сценарии должны быть автономными, перед тем как разрушить конкретный сценарий, вы должны подготовить все условия, необходимые для его выполнения, и, желательно, очистить также и после сценария.

  2. Чтобы сохранить окно браузера для нескольких сценариев, сделайте экземпляр WebDriver статичным, например, вы можете использовать шаблон Singleton Holder.

Я понимаю вашепроблема, чтобы протестировать главную страницу, вам необходимо войти в систему, поэтому, естественно, вы можете подумать, что выполнение сценариев по порядку решит ее, но это плохой подход.

Вместо этого, чтобы протестировать главную страницу, загрузите куки ввеб-драйвер, поэтому он думает, что вы уже вошли в сеанс, или, альтернативно, вы можете создать 'before' @ Login хук, который может проверить, если вывошли в систему, если не будет запущена процедура входа в систему, перед запуском сценария.

@Before(value = "@Login")
public void loginIfNeeded()
{
    // check you are logged in, if you are, do not login
    // if you are not logged in, perform login procedure.
}

Пример сценария:

@Login
Scenario: Test main page
  Given something
  When something
  Then something
0 голосов
/ 17 апреля 2019

Я бы предложил использовать qaf для управления драйверами и ресурсами.Ваш файл корнишон останется таким же.Чтобы запустить свой корнишон , используйте файл GherkinScenarioFactory

. Вы можете указать браузер для использования, используя driver.name свойство .Вам не нужно писать код для создания или сноса драйвера.Вы можете установить поведение сеанса драйвера, используя свойство selenium.singletone.

#this will tear down driver after each testcase/scenario
selenium.singletone=method
#this will tear down driver after each group and will reuse same driver session for testcases/scenario which are in same group.
selenium.singletone=group
#this will tear down driver after each xml test node in configuration file and will reuse same driver session for testcases/scenario configured under same xml test node.
selenium.singletone=test
#this will tear down driver after each xml suite node in configuration file.
selenium.singletone=suite
...