Selenium Test - сохранить сеанс на нескольких тестовых прогонах - PullRequest
3 голосов
/ 08 марта 2011

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

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

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

Я использую Java и Selenium RC.

Спасибо!

Ответы [ 3 ]

1 голос
/ 09 марта 2011

Это немного зависит от вашей среды.Я использую C # с Selenium RC (и, следовательно, тестовый фреймворк NUnit).Поскольку вы используете Java (и, вероятно, JUnit), он работает так же.И JUnit, и NUnit позволяют указывать специальный код, который выполняется перед каждым тестом, после каждого теста, перед каждым пакетом или после каждого пакета.

В вашем случае вы хотите предоставить код для запуска перед пакетом (aЭто просто набор всех ваших тестовых примеров в одном пространстве имен (C #) или классе (Java)).В C # я использую такой код - директива [TextFixtureSetUp] - это то, что позволяет NUnit распознавать это как код установки пакета.

   [TestFixtureSetUp]
    public void SetupTest()
    {
        selenium = Setup.StartSelenium();
        Setup.Login();
        Setup.Preliminaries();
    }

Эквивалентное обозначение в Java - использовать *Атрибут 1009 *@BeforeClass как в

public class Example {
    @BeforeClass
    public static void onlyOnce() {
       ...
    }
 }

Моя недавняя статья Веб-тестирование с Selenium Sushi: практическое руководство и набор инструментов очень сфокусировано на C #, но может предоставить вамс некоторыми общими идеями, которые вы можете применить к своей работе на Java.

0 голосов
/ 29 декабря 2015

в одну строку: Для этого вы можете использовать профиль Firefox.

В деталях: 1. Войдите в свой firefox вручную (используйте опцию «Запомнить меня» на вашем веб-сайте, если она есть. В противном случае все должно быть в порядке) 2. Перейдите в меню Firefox> Справка> Информация об устранении неполадок> Папка профиля (нажмите на нее). 3. Когда вы вызываете свой селеновый веб-драйвер (хотя не уверен насчет RC), используйте этот

ProfilesIni profileIni = new ProfilesIni();
FirefoxProfile profile = profileIni.getProfile("<YOUR PATH TO FF PROFILE FROM STEP 2>");
this.driver = new FirefoxDriver(profile);

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

0 голосов
/ 09 марта 2011

Я бы предложил использовать testng , который позволяет вам использовать java-аннотации для предварительной обработки, такие как вызов определенного фрагмента кода только перед классом или набором тестов с использованием @BeforeClass, @BeforeSuite соответственно. Здесь вы можете определить создание экземпляра сервера селена, вызов браузера, который должен быть выполнен либо перед классом набора тестов (также доступно много других опций), а затем это может быть повторно использовано в последующих методах тестирования.

...