«Не удается подключиться к средству визуализации» после обновления до protractor 4.0.9. Тесты не запускаются. Есть идеи относительно того, почему?

#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
            }
        }
    }