Protractor — это фреймворк для энд-ту-энд тестирования Angular и AngularJS приложений, построенный поверх WebDriverJS. Для его корректной работы требуется правильная настройка WebDriver и локального сервера Selenium.
Установка Protractor через npm:
npm install -g protractor
Эта команда устанавливает две ключевые утилиты:
protractor и webdriver-manager.
webdriver-manager используется для управления Selenium
Server и драйверами браузеров.
Protractor взаимодействует с браузером через Selenium WebDriver. Для работы необходим Selenium Server и соответствующие драйверы для браузеров (ChromeDriver, GeckoDriver для Firefox и т.д.).
Обновление WebDriver и Selenium Server:
webdriver-manager update
Эта команда скачивает последние версии Selenium Server и драйверов браузеров.
Запуск Selenium Server:
webdriver-manager start
После запуска сервер будет доступен по адресу
http://localhost:4444/wd/hub. Protractor может подключаться
к этому серверу либо работать напрямую с браузерными драйверами
(ChromeDriver, FirefoxDriver).
Файл конфигурации (protractor.conf.js) определяет, как
будут запускаться тесты. Основные параметры:
exports.config = {
// Адрес Selenium Server или 'directConnect: true' для прямого подключения к драйверам
seleniumAddress: 'http://localhost:4444/wd/hub',
// directConnect позволяет запускать тесты без отдельного Selenium Server
directConnect: true,
// Файлы тестов
specs: ['tests/*.spec.js'],
// Используемые браузеры
capabilities: {
browserName: 'chrome'
},
// Фреймворк для тестов (Jasmine, Mocha, Cucumber)
framework: 'jasmine',
// Настройки Jasmine
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
},
// Опции для работы с Angular приложениями
onPrepare: function() {
browser.ignoreSynchronization = false;
}
};
Прямое подключение vs Selenium Server:
directConnect: true упрощает запуск, напрямую используя
ChromeDriver или GeckoDriver.seleniumAddress позволяет подключаться к удаленному
Selenium Server, что удобно для распределенного тестирования или
CI/CD.Для работы Protractor необходим установленный браузер и соответствующий драйвер.
Chrome:
ChromeDriver (устанавливается командой
webdriver-manager update).capabilities:capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--headless', '--disable-gpu', '--window-size=1920,1080']
}
}
Firefox:
capabilities: {
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
}
Опции headless позволяют запускать тесты без открытия
графического интерфейса браузера, что ускоряет выполнение в CI/CD
средах.
Protractor использует концепцию синхронизации с Angular. Для работы с асинхронными элементами:
browser.wait — ожидание определенного условия:let EC = protractor.ExpectedConditions;
let button = element(by.id('submit'));
browser.wait(EC.elementToBeClickable(button), 5000);
browser.sleep(1000) — временная пауза (не
рекомендуется для регулярного использования, только при
необходимости).
browser.ignoreSynchronization = true — отключение
автоматической синхронизации с Angular, если тестируемое приложение не
Angular.
Protractor поддерживает параллельный запуск тестов:
multiCapabilities: [
{ browserName: 'chrome' },
{ browserName: 'firefox' }
]
seleniumArgs в
конфигурации.directConnect: true и запускать браузер в режиме без
headless, чтобы видеть действия теста.webdriver-manager перед запуском
тестов.ignoreSynchronization = false.Эти шаги создают стабильную базу для запуска Protractor-тестов и обеспечивают корректное взаимодействие с браузером и Selenium Server.