Protractor: Решение для использования [email protected] с Chrome 74+

Созданный на 25 апр. 2019  ·  55Комментарии  ·  Источник: angular/protractor

@cnishina Есть ли

Причина . Перенести большие проекты транспортира в версию 6.0.0 - это огромные усилия. Когда Chrome автоматически обновляется, вы - SOL.

Объяснение проблемы
Ошибка транспортира

fixed bug

Самый полезный комментарий

Привет @cnishina!

У нас такая же проблема, как у @shihuawang и @raymonsaadalla . У нашей компании есть целая база кода автоматизированных скриптов, которые мы запускаем на Protractor, и теперь, когда Chrome автоматически обновляется до версии 74, тестовые примеры не выполняются.

У нас есть следующие версии приложений:

  • Chrome - 74.0.3729.131,
  • Транспортир - 5.4.2,
  • webdriver-manager - 12.1.4,
  • узел - v8.12.0,
  • хромированный - 74.0.3729.6.

Мы также сделали новую установку webdriver-manager и Protractor (те же версии, что и выше).
Запуск скриптов Protractor дал тот же результат, браузер Chrome появляется, но затем зависает навсегда.

К сожалению, откат Chrome до версии 73 не подходит для нас. Есть ли способ обойти эту проблему?

Все 55 Комментарий

Есть исправление, которое в настоящее время привязано к webdriver-manager 13.

Хорошая новость в том, что когда происходили эти изменения, я работал над исправлением webdriver-manager. Вы можете использовать Protractor 5.4.2 с webdriver-manager 13. https://github.com/angular/webdriver-manager/pull/372, однако я не уверен, как это работает с прямым и локальным подключением, если их больше одного версия webdriver-manager в каталоге модулей узлов.

Можем ли мы выпустить webdriver-manager 13 с помощью Protractor 5? Возможно, но это можно рассматривать как критическое изменение, поскольку я удалил мобильную поддержку webdriver-manager в версии 13.

Установка тега обсуждения для версии Protractor 5 + webdriver-manager 13.

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

Может ли кто-нибудь догадаться, сколько усилий потребовалось для создания еще одной версии 5.xx?

@cnishina Перед вашим ответом я попытался взломать, чтобы последняя версия webdriver-manager работала с 5.4.2, но безуспешно. Я просто:

  1. npm установлено 13
  2. запустил webdriver-manager update чтобы загрузить chromedriver 74
  3. скопировал папку селеном

    • от node_modules\webdriver-manager\selenium

    • в node_modules\protractor\node_modules\webdriver-manager\selenium

Ага. Я смотрел на главную ветку, когда смотрел на поставщиков драйверов, а не на 5.4.2. Так что нужно еще поработать, чтобы заставить 13 работать. Позвольте мне обновить мой PR. Возможно, мне придется создать бета-версию для webdriver-manager, чтобы поэкспериментировать с этим.

Хорошо, https://github.com/angular/webdriver-manager/pull/372 - это мой обходной путь для 13 с Protractor 5.4.2 (с тестами!).

Что ж, я сейчас в растерянности. Внезапно сегодня я больше не получаю вчерашнюю ошибку , и тесты проходят нормально на chrome 74 и chromedriver 2.46

Итак, раньше тесты на 73 выполнялись нормально, я специально обновился до 74, а затем получил указанную выше ошибку. Поэтому я просто предположил, что это связано, и что любой, кто обновил Chrome до 74, больше не сможет запускать тесты, если он не развернет локально концентратор / узел сетки селена.

Согласно документации, Chromedriver 2.46 не поддерживает Chrome 74, но, по крайней мере, позволяет мне запускать тесты сейчас? Есть идеи, что еще могло измениться? Или эта ошибка вообще связана?

Хром 74.0.3729.108
Транспортир 5.4.2
webdriver-менеджер 12.1.2
chromedriver_2.46

Неважно, я только что увидел ваш пост SO, и, глядя на наши предыдущие журналы сборки, похоже, что скачивается webdriver:manager update

selenium-server-standalone-4.0.0-alpha-1.zip.jar
вместо
selenium-server-standalone-3.141.59.jar

Так что теперь это актуальная проблема. Вышел Chrome 74, а Protractor 5.4.2 использует webdriver-manager 12.xx Он загружает только хромированные драйверы 2.xx. Это проблема, и мы скоро ее исправим.

Итак, вот исправление для webdriver-manager 12, которое будет работать с Protractor 5.4.2: https://github.com/angular/webdriver-manager/pull/377

Итак, теперь это было решено с выпуском [email protected].

Как его получить?

  • выполните новую установку каталога модулей вашего узла (удалите папку node_modules и выполните npm install )
  • выполнить принудительную установку npm install -f

Дополнительная информация здесь, в сообщении StackOverflow: https://stackoverflow.com/questions/55910242/when-using-protractor-5-4-2-webdriver-manager-downloads-2-46-which-is-not-compa/55911176 # 55911176

У меня проблема в том, что Protractor по-прежнему устанавливает драйвер 2.46, и когда я пытаюсь установить webdriver-manager самостоятельно и добавить его в свои зависимости, Protractor не может найти установленный хромированный драйвер.

"C:\Program` Files\nodejs\node.exe" C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\bin\protractor "C:\Users\Kurt\WebStorm 2019.1.1\plugins\JavaScriptLanguage\helpers\protractor-intellij\lib\protractor-intellij-config.js" --intellijOriginalConfigFile=C:\Users\Kurt\WebstormProjects\hcp\e2e\protractor.conf.js --disableChecks --specs C:\Users\Kurt\WebstormProjects\hcp\e2e\src\settings\homepage.e2e-spec.ts "--grep=^core "
[02:18:10] I/launcher - Running 1 instances of WebDriver
[02:18:10] I/direct - Using ChromeDriver directly...
[02:18:10] E/direct - Error code: 135
[02:18:10] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[02:18:10] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
    at Direct.getNewDriver (C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\built\driverProviders\direct.js:63:31)
    at Runner.createBrowser (C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\built\runner.js:195:43)
    at C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\built\runner.js:339:29
    at _fulfilled (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:834:54)
    at C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:863:30
    at Promise.promise.promiseDispatch (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:796:13)
    at C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:556:49
    at runSingle (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:137:13)
    at flush (C:\Users\Kurt\WebstormProjects\hcp\node_modules\q\q.js:125:13)
    at processTicksAndRejections (internal/process/task_queues.js:81:9)
[02:18:10] E/launcher - Process exited with error code 135

Process finished with exit code 135

А вот и конфигурационный файл

const {SpecReporter} = require('jasmine-spec-reporter');

exports.config = {
  SELENIUM_PROMISE_MANAGER: false,
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    random: true,
    showColors: true,
    defaultTimeoutInterval: 30000
  },
  random: false,
  onPrepare: async () => {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
    await browser.driver.manage().window().maximize();
  }
};

Когда я запускаю обновление webdriver-manager

webdriver-manager: using local installed version 12.1.3
[02:33:40] I/update - chromedriver: file exists C:\Users\Kurt\WebstormProjects\hcp\node_modules\webdriver-manager\selenium\chromedriver_75.0.3770.8.zip
[02:33:40] I/update - chromedriver: unzipping chromedriver_75.0.3770.8.zip
[02:33:40] I/update - chromedriver: chromedriver_75.0.3770.8.exe up to date
[02:33:41] I/update - selenium standalone: file exists C:\Users\Kurt\WebstormProjects\hcp\node_modules\webdriver-manager\selenium\selenium-server-standalone-3.141.59.jar
[02:33:41] I/update - selenium standalone: selenium-server-standalone-3.141.59.jar up to date
[02:33:41] I/update - geckodriver: file exists C:\Users\Kurt\WebstormProjects\hcp\node_modules\webdriver-manager\selenium\geckodriver-v0.24.0.zip
[02:33:41] I/update - geckodriver: unzipping geckodriver-v0.24.0.zip
[02:33:41] I/update - geckodriver: geckodriver-v0.24.0.exe up to date


Когда я удаляю webdriver-manager из package.json, удаляю node_modules и запускаю npm i , npm i-f и webdriver-manager update я получаю

C:\Users\Kurt\WebstormProjects\hcp>webdriver-manager update
[02:38:17] I/file_manager - creating folder C:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium
[02:38:17] I/config_source - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium\standalone-response.xml https://selenium-release.storage.googleapis.com/
[02:38:17] I/config_source - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium\chrome-response.xml https://chromedriver.storage.googleapis.com/
[02:38:17] I/config_source - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium\gecko-response.json https://api.github.com/repos/mozilla/geckodriver/releases
[02:38:17] I/downloader - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium/chromedriver_2.46.zip https://chromedriver.storage.googleapis.com/2.46/chromedriver_win32.zip
[02:38:18] I/downloader - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium/selenium-server-standalone-3.141.59.jar https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
[02:38:18] I/update - chromedriver: unzipping chromedriver_2.46.zip
[02:38:19] I/downloader - curl -oC:\Users\Kurt\WebstormProjects\hcp\node_modules\protractor\node_modules\webdriver-manager\selenium/geckodriver-v0.24.0.zip https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win64.zip
[02:38:20] I/update - geckodriver: unzipping geckodriver-v0.24.0.zip

C:\Users\Kurt\WebstormProjects\hcp>

@ Kurt29 Странно, вы можете проверить версию с помощью node_modules / protractor / node_modules / webdriver-manager / package.json. Вы используете глобальные установки?

Предлагаемые исправления для загрузки определенных версий, запуска определенных версий, статуса и предотвращения загрузки 75.

https://github.com/angular/webdriver-manager/issues/376

Я только что выпустил 12.1.4 с исправлением: https://github.com/angular/webdriver-manager/pull/380. Это должно исправить проблемы, которые мы наблюдаем с несовпадениями chromedriver 75 и chrome 74. Также вы сможете загрузить --versions.chrome 74.0.3729.6 с 12.1.4. Это было нарушено в 12.1.3.

@ luker2 Хотите проверить это у меня и попробовать 12.1.4?

Хорошо, это было проверено на https://github.com/angular/webdriver-manager/issues/376

@cnishina Работает с моей стороны.

Я указал 74 и 75 с помощью флага --versions.chrome и он загрузил соответствующие драйверы. Без флага скачал 74.0.3729.6

Спасибо!

Вот сообщение StackOverflow, которое сопровождает это: https://stackoverflow.com/questions/55910242/when-using-protractor-5-4-2-webdriver-manager-downloads-2-46-which-is-not -compa

Я переустановил транспортир в свои локальные модули node_modules, но версия webdriver-manager осталась прежней: "webdriver-manager": "^ 12.0.6". Также попытался установить локально в новую папку, тот же результат. Возможно, это проблема npm ...

Заметил, что в webdriver-manager package.json webdriver-manager правильная "версия": "12.1.4", но в зависимостях protractor package.json версия webdriver-manager - "webdriver-manager": "^ 12.0.6". Это меня сбило с толку. Однако все работает хорошо.

Да, ^ 12.0.6 означает получение последней дополнительной версии. Таким образом, в этом случае он загрузит версию 12.1.4.

Несмотря на то, что он выглядит успешно установленным, но все мои тестовые примеры Protractor не прошли. Это сработало в пятницу (3 дня назад), но теперь снова не удалось.
Сбой начался, когда google-chrome-stable обновился до 74.0.3729.131-1. Изначально я смог получить свою тестовую работу, установив предыдущую стабильную версию google-chrome. Пятница работала с Protractor 5-4-2 и Chrome 74. Но теперь он снова не работает и не может найти никакого решения. Пожалуйста, порекомендуйте.

Я на докере ubuntu 16.04.

@cnishina, конечно, я совсем забыл о версиях npm "^" спасибо за объяснение и исправление

Поскольку # 5230 закрыт, я перемещаю сюда комментарии:

Поскольку новая версия [email protected] не работает (работала только 3 мая, пятница), мне пришлось попробовать старую версию, но она тоже не работает.

Chrome 73 работал до 3 мая, пятницы, но после этого больше не работает. Сейчас мы не можем запустить наш тест. Нам нужно решение. Пожалуйста посоветуй. Заранее спасибо.

Уточнение: старая версия, которую я установил ранее, работает нормально. Но когда я создаю докер, сейчас ни с текущей версией, ни со старой версией не работает. Похоже, что-то в какой-то новой версии сломано.

Я сузил вопрос. Ошибка возникает, когда код Angular определяет кнопку как:
<button type="submit" class="btn btn-info pull-right" ui-sref="xxx.xxx.xxx">Create New Element</button>
и сценарий тестирования транспортира:
browser.driver.findElements(by.xpath('//*[contains(text(), "' + arguments[0] + '")]'));
где arguments [0] = "Создать новый элемент"

В настоящее время у меня есть диспетчер webdriver версии 12.1.4 и chromedriver 74.0.3729.6, поэтому все должно работать, но мои тесты не работают при запуске в браузере Chrome 74.0.3729.131; однако он отлично работает, если я запускаю его на предыдущей версии 73. любое предложение?
Спасибо

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

Работает только система, установленная при выпуске 73-го. Но если вы установите 73 на новый сервер, это тоже не сработает.

Есть ли способ получить любую версию (новую установку)?

Что-то случилось в пятницу, была рабочая пятница.

Привет @cnishina!

У нас такая же проблема, как у @shihuawang и @raymonsaadalla . У нашей компании есть целая база кода автоматизированных скриптов, которые мы запускаем на Protractor, и теперь, когда Chrome автоматически обновляется до версии 74, тестовые примеры не выполняются.

У нас есть следующие версии приложений:

  • Chrome - 74.0.3729.131,
  • Транспортир - 5.4.2,
  • webdriver-manager - 12.1.4,
  • узел - v8.12.0,
  • хромированный - 74.0.3729.6.

Мы также сделали новую установку webdriver-manager и Protractor (те же версии, что и выше).
Запуск скриптов Protractor дал тот же результат, браузер Chrome появляется, но затем зависает навсегда.

К сожалению, откат Chrome до версии 73 не подходит для нас. Есть ли способ обойти эту проблему?

Я нахожусь в одной компании с @Priyankajoshipj. (Все мои приложения имеют те же версии, что и ее, перечисленные выше.) Прикрепленное изображение нашего браузера Google Chrome - это то, что происходит, когда мы пытаемся запустить скрипт Protractor. Браузер появляется то зависает вот так навсегда. Время ожидания истекает, и браузер остается в таком состоянии, пока мы не закроем его вручную.

2019-05-10_Hanging Protractor

@Niyarlatotep Я заметил, что npm, связанный с версией узла 10.9.0, загружал версию webdriver-manager 12.0.6. Когда я пробовал версию узла 10.15.3, Protractor 5.4.2 включает webdriver-manager 12.1.4. Если у вас все еще есть эта проблема, я бы изучил любые известные проблемы с npm.

@shihuawang Я сделал пример теста. У нас есть довольно похожие версии хром + хромированная отвертка. https://github.com/cnishina/protractor542-chrome74 В этом примере я включил версию Chrome и версии ChromeDriver, которые были загружены. У меня это работает, по крайней мере, на простом примере. Опять же, с описанной выше проблемой, я бы дважды проверил версии node, npm и webdriver-manager. Если вы все еще используете Chrome 73, я бы сослался на версию 73.0.3683.68. Это можно сделать с помощью webdriver-manager update --versions.chrome 73.0.3683.68 . Если вы все еще используете webdriver-manager 12.0.x, он загрузит chromedriver 2.46 ( webdriver-manager update --versions.chrome 2.46 ), который должен работать для версии 73.

@raymonsaadalla См. приведенный выше комментарий к версии 73. Вы можете использовать Chromedriver 73.0.3683.68 или 2.46.

@ XL175816 и @Priyankajoshipj Я смог заставить это работать на моем простом примере: https://github.com/cnishina/protractor542-chrome74 Когда эти тесты работали раньше? Вы используете async / await? Первый веб-сайт, на который вы направляетесь, не является страницей Angular?

Пожалуйста, проверьте, установлен ли транспортир глобально. Попробуйте удалить папку node_modules и повторите попытку. Я тестировал async / await и не сталкивался с этими проблемами с webdriver-manager 12.1.4. Моя версия узла - 10.15.3

Вы также можете попробовать удалить package.lock.json и снова установить npn.

Также попробуйте команду npm dedupe . Исправляет ошибку с версией webdriver-manager, если установить ее вручную.

Мы пару раз пробовали удалить папку node_modules и переустановить Protractor и webdriver-manager, предложенные @vsravuri. Мы также попытались удалить package.lock.json и снова выполнить «npm install».

@cnishina Наши тесты работали до полудня понедельника (06.05). Они работали весь день, пока Google Chrome автоматически не обновился до версии 74; затем все они потерпели неудачу, в том числе и те, которые мы только что успешно запустили несколько минут назад. Ни в одном из наших скриптов нет async / await. И действительно, первый веб-сайт, на который мы направляемся, - это страница Angular.

Вы используете Node 10.15.3? Какую ошибку вы видите при запуске теста? Каков результат обновления webdriver-manager?

Привет, cnishina,
Версия 74 + webdriver-manager 12.1.4 + ChromeDriver 74 + nodejs 6.x + Protractor 5.4.2 у нас не работает.

Это случалось с нами несколько раз, когда обновлялась стабильная версия Chrome, и каждый раз это исправлялось позже. Но на этот раз это не исправили. Я ранее сказал, что однажды это было исправлено, что было моим недоразумением. Так что это никогда не исправлено для 74.

Когда-то я мог заставить его работать, установив 73, но теперь это не работает.

73, который я ранее установил, работает хорошо, но не работает с новой установкой.

И причина отказа не исключение. Возможно, это связано с тайм-аутом процесса, может быть что-то еще.

Привет, всравури, Транспортир установлен глобально, и большинство других случаев сработало. И до обновления до 74 все еще работало. также моя предыдущая установка с 73 все еще работает, но нам нужно установить на новый докер для официального ночного тестирования. Наш проект был отложен из-за этой проблемы.

Привет, всравури, моей ошибке не удалось создать новую запись, для которой истекло время ожидания одного из шагов, но она все равно должна быть создана. и он работал до хром 74. Одно время 73 не работал, но позже это было исправлено. Можно таким же образом исправить 74?

До 74 мы всегда можем вернуться к более старой версии, чтобы заставить ее работать. Но на этот раз не повезло.

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

Вам нужно проверить, нет ли проблем с ChromeDriver 74 и вашим скриптом автоматизации. Чтобы очистить кеш браузера, вам нужно выбрать, хотите ли вы удалить файлы cookie, локальное хранилище или хранилище сеансов.

Попробуй это
browser.executeScript ('window.sessionStorage.clear ();');
browser.executeScript ('window.localStorage.clear ();');
browser.manage (). deleteCookie ("test_cookie");

Привет всравури,
Позже у меня сработал мой чистый кеш, каким-то образом он должен быть в функции, как предлагается по ссылке ниже:
https://stackoverflow.com/questions/45218022/how-to-clear-a-browser-cache-in-protractor?rq=1

Так что это решение моей конкретной проблемы. Но я очень надеюсь, что кто-то сможет исправить это, чтобы справиться с этой ситуацией, так как браузер Chrome ведет себя так же, как ручной тест. Это было проблемой в нескольких последних выпусках Chrome, и все они были исправлены, кроме 74.

У нас с @Priyankajoshipj есть следующие версии приложений:

  • Chrome - 74.0.3729.131,
  • Транспортир - 5.4.2,
  • webdriver-manager - 12.1.4,
  • узел - v10.15.3,
  • хромированный - 74.0.3729.6.

Выполнение наших скриптов по-прежнему вызывает ту же ошибку, что и раньше, с пустым Chrome. (Чтобы повторить себя сверху, браузер появляется, но пуст, он никогда не может попасть на https: // localhost, где находится наше приложение, и зависает так навсегда. Время ожидания истекло, и браузер по-прежнему остается в таком состоянии, пока мы вручную закройте его.) Поскольку он зависает, cmd ничего не говорит (просто мигает курсор), поэтому мы даже не знаем, в чем ошибка.

Очистка кеша Chrome перед запуском скрипта для нас не работает. Результат тот же. И наши тесты все равно не должны очищать кеш.

Мы нашли кое-что, что могло быть зацепкой. Мы смогли запустить простой тест @cnishina, упомянутый выше, и, поэкспериментировав, нашли способ заставить наши тесты работать. Это требует использования async / await; нам пришлось бы добавить «ожидание» перед каждой строкой… Без async / await Chrome либо иногда попадает на https: // localhost, затем немедленно закрывается и говорит «Ошибка при ожидании синхронизации Protractor со страницей», либо иногда не вообще не попадаю на localhost (вечно висящий пустой браузер, который я прикрепил выше).

Однако изменение всего кода в наших сценариях потребует значительных усилий. И, как упоминалось ранее, к сожалению, понижение версии Chrome до версии 73 для нас не вариант. Надеюсь, Chrome версии 74 можно исправить.

@ XL175816 в дальнейшем нам нужно сделать все async / await из-за устаревания потока управления. Если async / await работает, было бы неплохо начать эти инженерные работы сейчас, чтобы обновить ваши тесты.

@shihuawang Пожалуйста, откройте новую ошибку и добавьте дополнительную информацию. Как это не удается? Что вы делали? Что за сообщение об ошибке? У вас есть образец кода? В какой среде вы проводите тесты? Читая сообщения сверху, я не знаю, с чего начать и как помочь.

Я также собираюсь заблокировать этот разговор, поскольку это решено. Я оставляю его открытым на случай, если кто-то все еще столкнется с этой проблемой. Если у вас возникли проблемы с Protractor, которые, по вашему мнению, связаны с фреймворком, не стесняйтесь открывать новую проблему. Если вам нужна помощь в поддержке, задайте ее здесь: https://stackoverflow.com/questions/tagged/protractor

Была ли эта страница полезной?
0 / 5 - 0 рейтинги