#node.js #selenium #selenium-webdriver #protractor
#node.js #selenium #selenium-webdriver #protractor
Вопрос:
Я с удовольствием использовал protractor 3.3.0 с chromedriver 2.21, пока Chrome версии 54 не сломал его. Я обновился до protractor 4.0.9 с помощью chromedriver 2.24, как рекомендовано interwebs, и теперь я не могу заставить protractor запускать мои тесты. Похоже, что он запустится, отобразит окно браузера, а затем выбросит это…
Трассировка стека:
[09:51:27] I/direct - Using ChromeDriver directly...
[09:51:27] I/launcher - Running 1 instances of WebDriver
[09:51:28] E/launcher - session not created exception
from disconnected: unable to connect to renderer
(Session info: chrome=54.0.2840.71)
(Driver info: chromedriver=2.24.417412 (ac882d3ce7c0d99292439bf3405780058fcca0a6),platform=Mac OS X 10.12.0 x86_64)
[09:51:28] E/launcher - SessionNotCreatedError: session not created exception
from disconnected: unable to connect to renderer
(Session info: chrome=54.0.2840.71)
(Driver info: chromedriver=2.24.417412 (ac882d3ce7c0d99292439bf3405780058fcca0a6),platform=Mac OS X 10.12.0 x86_64)
at WebDriverError (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:27:10)
at SessionNotCreatedError (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:308:10)
at Object.checkLegacyResponse (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/error.js:639:15)
at parseHttpResponse (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:538:13)
at /Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/http/index.js:472:11
at ManagedPromise.invokeCallback_ (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1379:14)
at TaskQueue.execute_ (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2913:14)
at TaskQueue.executeNext_ (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2896:21)
at /Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2820:25
at /Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7
From: Task: WebDriver.createSession()
at Function.createSession (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver.js:329:24)
at Driver (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/selenium-webdriver/chrome.js:778:38)
at Direct.getNewDriver (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/built/driverProviders/direct.js:68:26)
at Runner.createBrowser (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/built/runner.js:198:43)
at /Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/built/runner.js:277:30
at _fulfilled (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/q/q.js:834:54)
at self.promiseDispatch.done (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/q/q.js:863:30)
at Promise.promise.promiseDispatch (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/q/q.js:796:13)
at /Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/q/q.js:556:49
at runSingle (/Users/gregorybuchanan/.nvm/versions/node/v4.2.6/lib/node_modules/protractor/node_modules/q/q.js:137:13)
[09:51:28] E/launcher - Process exited with error code 199
Я не могу найти ничего, ссылающегося на эту проблему…Есть идеи?
- macOS Sierra
- Chrome 54
- Protractor 4.0.9
- Selenium 2.53.1
- Узел 4.2.6
Мой conf.js файл:
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
framework: 'jasmine2',
suites: {
views: './*_view_spec.js',
forms: './*_form_spec.js',
active: ['./registration_spec.js', './onboarding_spec.js'],
all: './*_spec.js',
current: './registration_spec.js'
},
specs: ['./*_spec.js'],
jasmineNodeOpts: {
showColors: false
},
directConnect: true,
capabilities: {
chromeOptions: {
args: ['--no-sandbox', '--user-data-dir=ProtractorTestProfile','--prompt-for-external-extensions=false', '--load-extension=extension-debug/development/chrome']
},
browserName: 'chrome'
},
params: {
environment: {
api: 'dev',
baseUrl: 'http://webapp-dev.xxxxxxx.com/#/'
}
},
onPrepare: function() {
browser.driver.manage().window().setSize(1280, 1024);
var disableNgAnimate = function() {
angular.module('disableNgAnimate', []).run(['$animate', function($animate) {
$animate.enabled(false);
}]);
};
browser.addMockModule('disableNgAnimate', disableNgAnimate);
browser.getCapabilities().then(function(caps) {
browser.params.browser = caps.get('browserName');
});
}
};
Ответ №1:
У меня была такая же проблема, и оказалось, что проблема была с моим /etc/hosts
файлом. У меня было
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain hostname
::1 localhost.localdomain hostname
когда это должно было быть
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
итак, сервер Selenium подумал, что вы подключаетесь к нему с удаленного адреса или чего-то еще, и заблокировал соединение.
Вероятно, именно поэтому новая переустановка macOS устранила проблему для вас.
Надеюсь, это поможет кому-нибудь взглянуть на это в будущем!
Комментарии:
1. Вы спасаете жизнь
2. Потрясающе! Мой
/etc/hosts
файл был фактически пуст, но я вставил это, и все сработало как по волшебству!!!! Спасибо!
Ответ №2:
Как вы обновили драйвер Chrome? Используя:
webdriver-manager update --versions.chrome 2.24 ?
У меня была точно такая же проблема, и я решил ее, загрузив версию драйвера Chrome с http://chromedriver.storage.googleapis.com/index.html?path=2.24 / извлекаю файл в мою папку selenium (/usr/local/lib/node_modules/webdriver-manager/selenium/) и удаляю старый.
Я полагаю, что произошла какая-то ошибка при обновлении драйвера Chrome с помощью командной строки, см.: https://github.com/angular/webdriver-manager/issues/102
Комментарии:
1. Спасибо за ответ. Я перепробовал все …. оказывается, глубоко в подвале моей машины возникла какая-то странная проблема. Я полностью обновил установку и теперь я снова в деле.
Ответ №3:
Я не мог разобраться в этом и не мог больше тратить время на попытки. Полная / свежая установка macOS сделала свое дело.
Ответ №4:
У меня была такая же проблема, и я сбросил хосты, затем очистил сокет с помощью
chrome://net-internals/#sockets
Это помогло бы.
Это не проблема selenium или webdriver, просто что-то связано с буферизацией сокета Chrome / хоста.
Ответ №5:
Я пришел сюда с той же проблемой. Однажды я запускал тесты просто отлично, на другой день я включил IDE, снова запустил тесты, и он выдал эту ошибку. Я наткнулся на решение, когда отключил процессы Chrome, ChromeDriver и Eclipse, скопировал версию драйвера Chrome, которую случайно выбрал из репозитория, затем перезапустил их все, и по какой-то причине он снова начал работать. К сожалению, я понятия не имею о корне этой проблемы.
Ответ №6:
Я вижу ту же проблему в Chrome: Version 62.0.3202.75 (Official Build) (64-bit)
и ChromeDriver Version: 2.32
. Я просто выполнил эти шаги, и я могу успешно запустить свои тесты
Если вы используете browser.manage().window().maximize();
или что-либо с browser.manage() в своих объектах страницы или тестах, попробуйте удалить их и использовать возможности Chrome в protractor.conf.js.
Вот пример:
capabilities: {
browserName: 'chrome',
chromeOptions: {
// binary: 'PATH/To/your/binary',
args: [
'--disable-infobars', "--disable-gpu", "--start-maximized", '--disable-extensions'
],
prefs: {
// disable chrome's annoying password manager
'profile.password_manager_enabled': false,
'credentials_enable_service': false,
'password_manager_enabled': false
}
}
}