Как подключить и повторно использовать уже открытое окно браузера в Protractor
Как правило, скрипты транспортира выполняются в новом экземпляре браузера со следующими возможностями
capabilities: {
'browserName': 'firefox'
}
Есть ли какие-нибудь фрагменты или способы их подправить? так что наши скрипты используют уже открытый браузер через транспортир.
2 ответа
Что сработало для меня, для angular2:
- Перейдите на WebDriverHub и нажмите " Создать сессию", скопируйте сгенерированный идентификатор (например:
2919ed90-efac-48ee-83df-46f8e98ebce7
), вам это понадобится на шаге № 2. Добавить / Изменить
protractor.conf.js
отразить следующее.exports.config.seleniumAddress: ' http://localhost:4444/wd/hub', exports.config.seleniumSessionId: '2919ed90-efac-48ee-83df-46f8e98ebce7', exports.config.directConnect: false
Заметим:
- настройка
directConnect
ложное важно. seleniumSessionId
нужно будет обновлять каждый раз, когда вы создаете новую сессию (хотите, чтобы был способ узнать, используйте текущее окно браузера без обновленияseleniumSessionId
каждый раз)
Используйте browser.getCapabilities(), чтобы получить адрес отладчика. Используя адрес отладчика, мы можем общаться с существующим браузером. В приведенной ниже ссылке я написал статью об этом, взгляните на это.
В этой строке у вас есть пример того, как он передается в командную строку в Protractor: https://github.com/angular/protractor/commit/3f3805f9496fb130ae01b3e3278ee1ea7684d8e7 вы можете использовать тот же параметр, что и вы, можете использовать этот параметр в качестве аргумента. идентификатор сессии. Обычно вы можете получить текущий sessionId по browser.getSessionId
Пример 1:
var runProtractor = spawn('bin/protractor',
['spec/attachSession.js', '--seleniumSessionId=' + currentSessionId]);
Пример 2 с использованием вашей конфигурации:
var checkOptions = {
hostname: 'localhost',
port: 4444,
seleniumSessionId: yourCurrentSessionId
....
}