2014-09-09 2 views
9

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

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

onPrepare: function() { 
    var mymodule = require("./e2e/mymodule"); 
    mymodule.login(); 
    mymodule.switchToProject("someproject"); 
} 

Но до сих пор каротажное в занимает 3-4 секунд, каждый раз, когда я бег транспортира, который я хотел бы пропустить. Есть идеи ?

Я предпочитаю решение для chromeOnly: true настройки, но решение для отдельно сервера селена будет хорошо, как хорошо

+0

Ha! Мой e2e-люкс - это тысячи тестов и занимает ~ 30 минут, но вы жалуетесь на 3-4 секунды? Хе-хе, только модульное тестирование с кармой может ориентироваться на такую ​​скорость, Protractor e2e предназначается для запуска каждого сеанса браузера и сеанса кэширования каждый раз и повторного входа в систему каждый e2e работает как минимум в качестве первого шага. –

+0

При этом вам нужно искать способ повторного использования профиля Chrome при каждом запуске, используя тот же профиль, который позволит браузеру сохранять файлы cookie. –

+1

Спасибо, Лео за ваш совет. Я буду смотреть в Интернете, как повторно использовать конкретный хром-профиль. Тем временем я подумал о другом хорошем решении, чтобы внедрить логин через ключ API, которому потребуется только одна строка. Browser.get() – papoola

ответ

7

транспортира создает новый профиль Chrome каждый раз, когда он работает. Прежде чем возиться с этим, вы должны знать, что это обеспечивает надежность для ваших тестов: они будут работать одинаково каждый раз, потому что они начинаются с чистого листа. Если вы решите использовать постоянный профиль, который уже зарегистрирован, ваши тесты Protractor начнут сбой, как только истечет срок действия имени, профиль удаляется или вы запускаете их на другом компьютере.

Это означает, что вы можете попросить Chrome повторно использовать один и тот же профиль (включая файлы cookie и все настройки) для каждого прогона тестов Protractor. В вашем protractor.conf.js вы будете делать что-то вроде этого:

capabilities: { 
    'browserName': 'chrome', 
    'chromeOptions': { 
     'args': ['--user-data-dir=/a/random/path'] 
    } 
} 

'args' здесь резолютивная часть. Он позволяет передавать аргументы командной строки версии Chrome для Chrome при ее запуске (например, вы можете передать '--start-maximized', чтобы максимизировать Chrome при запуске).

Замените /a/random/path на любой путь к файлу (начиная с root) в вашей системе. Просто убедитесь, что папки, на которые вы ссылаетесь, были созданы. Вам не нужно использовать свой собственный путь к профилю Chrome - это просто лишние хлопоты. Создайте папку где-нибудь и используйте ее.

Когда «Транспортир» запустит Chrome, его профиль будет находиться в указанном вами местоположении и будет продолжать использовать его до тех пор, пока ваш путь не изменится.

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

+0

хороший ответ, хорошо написанный –

+0

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

Смежные вопросы