Spawn unknown system error 86

Suddenly on the afternoon of January 6, 2021, my Selenium Protractor tests under OSX stopped working with the mysterious error spawn Unknown system error -86 I did some research and discovered that

Edit: this answer should be considered deprecated now that the underlying bug in webdriver-manager has been fixed. A better solution would be to upgrade to the newest version of webdriver-manager. The answer below may be useful if people need to use an older version of webdriver-manager which still has the bug.

As per Deepak Srinivasan’s comment above, this error is caused by https://github.com/angular/webdriver-manager/issues/476

Root Cause:
The ChromeDriver team added «_m1» to the end of the filename for their Apple Silicon ARM builds of Chromedriver — but both the Silicon and Intel versions of chromedriver have «mac64» in the filename, and the version number is exactly the same. This causes webdriver-manager to always download the Silicon build of Chromedriver, even on Intel macs. As a general solution, simply avoid using the chromedriver that has _m1 in its filename if you are on an Intel mac.

Solution 1: Downgrade to Chrome 86.0.4240.198 and Chromedriver 86.0.4240.22. These versions work together and are the most recent versions prior to the new and problematic support for Silicon ARM

Chrome 86 download page:
https://google-chrome.en.uptodown.com/mac/download/2920124

Disable auto-updates in Chrome: https://superuser.com/questions/1359017/how-do-i-disable-automatic-updates-of-google-chrome-on-mac-os-x

Chromedriver 86: https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22/

% webdriver-manager update --versions.chrome=86.0.4240.22

Solution 2: Modify the webdriver-manager npm package to point to the correct chromedriver (thanks to ciekaway from the angular github issue page for this fix)

Modify the following file

node_modules/webdriver-manager/built/lib/files/file_manager.js

or, if using protractor

node_modules/protractor/node_modules/webdriver-manager/built/lib/files/file_manager.js

Near the top of the downloadFile method around line 166, add the following line to remove «_m1» from the name of the file:

fileUrl.url = fileUrl.url.replace(/_m1/, '');

It needs to be after the beginning of the .then block that starts with

binary.getUrl(binary.version()).then(fileUrl => {

it also needs to be before the next reference to fileUrl.
For example:

binary.getUrl(binary.version()).then(fileUrl => {
    binary.versionCustom = fileUrl.version;
    fileUrl.url = fileUrl.url.replace(/_m1/, '');
    let filePath = path.resolve(outputDir, binary.filename());

Note that this solution is temporary. It will be overwritten by an npm install. The Chromedriver and/or the webdriver-manager team will probably fix this issue, at which point you should clear the modified version of your webdriver-manager and download the fix from npm.

Edit: this answer should be considered deprecated now that the underlying bug in webdriver-manager has been fixed. A better solution would be to upgrade to the newest version of webdriver-manager. The answer below may be useful if people need to use an older version of webdriver-manager which still has the bug.

As per Deepak Srinivasan’s comment above, this error is caused by https://github.com/angular/webdriver-manager/issues/476

Root Cause:
The ChromeDriver team added «_m1» to the end of the filename for their Apple Silicon ARM builds of Chromedriver — but both the Silicon and Intel versions of chromedriver have «mac64» in the filename, and the version number is exactly the same. This causes webdriver-manager to always download the Silicon build of Chromedriver, even on Intel macs. As a general solution, simply avoid using the chromedriver that has _m1 in its filename if you are on an Intel mac.

Solution 1: Downgrade to Chrome 86.0.4240.198 and Chromedriver 86.0.4240.22. These versions work together and are the most recent versions prior to the new and problematic support for Silicon ARM

Chrome 86 download page:
https://google-chrome.en.uptodown.com/mac/download/2920124

Disable auto-updates in Chrome: https://superuser.com/questions/1359017/how-do-i-disable-automatic-updates-of-google-chrome-on-mac-os-x

Chromedriver 86: https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22/

% webdriver-manager update --versions.chrome=86.0.4240.22

Solution 2: Modify the webdriver-manager npm package to point to the correct chromedriver (thanks to ciekaway from the angular github issue page for this fix)

Modify the following file

node_modules/webdriver-manager/built/lib/files/file_manager.js

or, if using protractor

node_modules/protractor/node_modules/webdriver-manager/built/lib/files/file_manager.js

Near the top of the downloadFile method around line 166, add the following line to remove «_m1» from the name of the file:

fileUrl.url = fileUrl.url.replace(/_m1/, '');

It needs to be after the beginning of the .then block that starts with

binary.getUrl(binary.version()).then(fileUrl => {

it also needs to be before the next reference to fileUrl.
For example:

binary.getUrl(binary.version()).then(fileUrl => {
    binary.versionCustom = fileUrl.version;
    fileUrl.url = fileUrl.url.replace(/_m1/, '');
    let filePath = path.resolve(outputDir, binary.filename());

Note that this solution is temporary. It will be overwritten by an npm install. The Chromedriver and/or the webdriver-manager team will probably fix this issue, at which point you should clear the modified version of your webdriver-manager and download the fix from npm.

Содержание

  1. Unknown system error -86 when building on Apple Silicon #117
  2. Comments
  3. Footer
  4. Spawn unknown system error 86
  5. Вопрос:
  6. Комментарии:
  7. Ответ №1:
  8. Комментарии:
  9. Ответ №2:
  10. Комментарии:
  11. Ответ №3:
  12. Для macOS Catalina версии 10.15.6 (19G73)
  13. Комментарии:
  14. Ответ №4:
  15. Ответ №5:
  16. Error: spawn Unknown system error -86 #23
  17. Comments
  18. Error on Apple Silicon #5816
  19. Comments
  20. Footer

Unknown system error -86 when building on Apple Silicon #117

If this is a real issue, I have an Apple Silicon Mac and would like to help.

On Apple Silicon (arm64/arm64-apple-macos11) the build pre-test fails with the following issue:

The text was updated successfully, but these errors were encountered:

I have a similar error on an AMD processor on a nixos distrib.
It’s likely (my guess) that there is a library missing. Unfortunately the error doesn’t give you any information.
I’ve tried including libpng and zlib. I can’t really figure out which library might be missing.
If anybody has any idea, I’m interested in testing as well.

webpack_1 | ar: `u’ modifier ignored since `D’ is the default (see `U’) webpack_1 | ar: `u’ modifier ignored since `D’ is the default (see `U’) webpack_1 | ar: `u’ modifier ignored since `D’ is the default (see `U’) webpack_1 | ar: `u’ modifier ignored since `D’ is the default (see `U’) webpack_1 | pngxmem.c: In function ‘pngx_malloc_rows_extended’: webpack_1 | pngxmem.c:38:34: warning: comparison is always false due to limited range of data type [-Wtype-limits] . «>

I have been getting the same error on Apple Silicon with a Docker container. Any headway on this? Could be that it is related to this webpack_1 | /lib64/ld-linux-x86-64.so.2: No such file or directory being missing.

The root issue is that when building from source the included libPNG is 1.6.34 and is enabling the NEON optimizations present in aarch64. Two solutions to work around this:

  1. set CPPFLAGS=-DPNG_ARM_NEON_OPT=0 before running yarn / nom . This will disable those NEON processor optimizations when compiling the included libPNG from source.
  2. install libPNG locally ( brew install libpng ) and add —with-system-libpng to the configure invocation. Make sure to set C_INCLUDE_PATH=/opt/homebrew/include so that optipng can find the standard headers.

For anyone who is running into this issue on the M1 MacBook 14″ and 16″,
Apparently rosetta doesn’t come preinstalled on macOS 12.
I was able to resolve this by installing with softwareupdate —install-rosetta

Rosetta is a crutch that enables unsigned code execution through the secure enclave and enables intel bad security practices things like writing dynamic code to an executable memory page. Ideally rosetta should be avoided.

Sorry to bump an old issue, but was there any resolution to this? I’m on a M1 MacBook Pro myself and cant get past the optipng-bin Module not found error.

Bump. Same as above 🙁

It is wild that this has not been addressed in over a year on a package that has almost 1M npm downloads a week!! This goes a little beyond my skill-level. If any one is willing to start a PR though, I will try and help where ever I can. Email me.

I have not been able to generate a single Favicon in over a year ;-(

I was able to get rid of this by installing the xcode (with rosetta).

set CPPFLAGS=-DPNG_ARM_NEON_OPT=0 before running yarn/nom. This will disable those NEON processor optimizations when compiling the included libPNG from source.

Nice this worked.

© 2023 GitHub, Inc.

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Spawn unknown system error 86

#macos #selenium #webdriver #selenium-chromedriver #apple-silicon

#macos #селен #webdriver #selenium-chromedriver #apple-silicon

Вопрос:

Внезапно во второй половине дня 6 января 2021 года мои тесты Selenium Protractor в OSX перестали работать с загадочной ошибкой

Я провел некоторое исследование и обнаружил, что номер ошибки 86 совпадает с

и выполнил следующее, чтобы сравнить архитектуру процессора моего двоичного файла chromedriver с моей системой:

Как я могу исправить двоичный файл chromedriver, используемый моим Selenium, чтобы он запускался на моем Intel x64 mac и очищал сообщение «системная ошибка -86» или «Неправильный тип процессора»?

Комментарии:

1. Похоже, что chromedriver теперь поддерживает архитектуру Apple Silicon ARM, а «обновление webdriver-manager —versions.chrome= » теперь всегда использует сборку chromedriver arm64 из chromedriver.storage.googleapis.com вместо сборки x86_64. Я пытаюсь выяснить, как заставить webdriver-manager вместо этого загрузить сборку intel x86.

2. Проблема в том, что до версии chrome 86 была только одна версия для mac64 chromedriver. Но начиная с версии Chrome 87. Для chrome mac64 и mac64_ml есть два двоичных файла. Загружается только mac64_ml, который предназначен для arm64 arch, поэтому исправление необходимо выполнить в webdriver_manager chrome_xml.js .

4. Кстати, совершенно случайно, что код ошибки 86 можно исправить, откатившись к Chrome 86

Ответ №1:

Проблема описана в https://github.com/angular/webdriver-manager/issues/476 . Теперь это исправлено в 12.1.8, поэтому просто обновите этот webdriver manager.

Для большинства пользователей это может быть достигнуто с помощью

Комментарии:

1. Я запустил новую npm install версию с последней версией Protractor, и это исправило ее. Спасибо.

2. Я отмечаю это как предпочтительный ответ, поскольку, хотя информация в моем другом ответе может быть полезна всем, кто в будущем получит unkonwn system error -86, для большинства людей, которые видят ошибку из-за выпуска Chromedriver _m1 Silicon Arm, самым простым решением будет продолжить и обновитьк более новой версии protractor и webdriver-manager, которая исправляет это.

3. Для некоторых это может быть здравым смыслом, но мне пришлось зайти в usr/local/lib/node_modules моего mac и удалить webdriver-manager каталог перед запуском npm install . После того, как я это сделал, все заработало. Кстати, повторная установка оказалась в корзине моего недавно установленного каталога .nvm, найденного при запуске which webdriver-manager .

Ответ №2:

Редактировать: этот ответ следует считать устаревшим теперь, когда основная ошибка в webdriver-manager была исправлена. Лучшим решением было бы перейти на новейшую версию webdriver-manager. Приведенный ниже ответ может быть полезен, если людям нужно использовать более старую версию webdriver-manager, в которой все еще есть ошибка.

Согласно комментарию Дипака Шринивасана выше, эта ошибка вызвана https://github.com/angular/webdriver-manager/issues/476

Основная причина: команда ChromeDriver добавила «_m1» в конец имени файла для своих Apple Silicon ARM-версий Chromedriver, но и в версиях chromedriver для Silicon, и для Intel в имени файла указано «mac64», а номер версии точно такой же. Это приводит к тому, что webdriver-manager всегда загружает кремниевую сборку Chromedriver, даже на компьютерах Intel Mac. В качестве общего решения просто избегайте использования chromedriver с именем файла _m1, если вы используете Intel Mac.

Решение 1. Понизьте версию до Chrome 86.0.4240.198 и Chromedriver 86.0.4240.22. Эти версии работают вместе и являются самыми последними версиями до появления новой и проблемной поддержки Silicon ARM.

Решение 2. Измените пакет npm webdriver-manager, чтобы указать на правильный chromedriver (спасибо ciekaway со страницы проблем angular github за это исправление)

Измените следующий файл

или, если используется транспортир

В верхней части метода DownloadFile около строки 166 добавьте следующую строку, чтобы удалить «_m1» из имени файла:

Это должно быть после начала .затем блок, который начинается с

это также должно быть перед следующей ссылкой на fileURL.
Например:

Обратите внимание, что это решение является временным. Он будет перезаписан при установке npm. Chromedriver и / или команда webdriver-manager, вероятно, устранят эту проблему, после чего вам следует очистить модифицированную версию вашего webdriver-manager и загрузить исправление из npm.

Комментарии:

1. Пытался сделать это с помощью решения 1, но позже получил ошибку при попытке запустить тест транспортира. Ошибка: E / launcher — SessionNotCreatedError: не удалось создать новую службу: ChromeDriverService. Информация о драйвере: driver.version: неизвестно

2. Оказалось, мне пришлось указать версию, например: webdriver-manager start —versions.chrome 86.0.4240.22

3. Я попробовал решение 1, но я получаю ту же ошибку, что и @user1328889. Я использовал ./node_modules/.bin/webdriver-manager start —versions.chrome= 86.0.4240.198, но это дало мне эту ошибку: E /start — Selenium Standalone отсутствует. Установка с обновлением webdriver-manager — автономная. Я вижу selenium-server-standalone-3.141.59.jar однако в моей папке selenium.

4. Еще одна проблема с решением № 1 заключается в том, что Chrome продолжает автоматическое обновление до версии 88 даже после отключения обновлений. В настройках Chrome отображается 86, но при щелчке правой кнопкой мыши на информации о приложении вы можете увидеть, что версия 88. Из-за этого тесты завершаются с ошибкой: essionNotCreatedError: сессия не создана: эта версия ChromeDriver поддерживает только версию Chrome 86 Текущая версия браузера 88.0.4324.96 с двоичным путем / Applications/ Google Chrome.app/Contents/ macOS / Google Chrome

5. Спасибо @emery. Я попробовал npm uninstall protractor amp;amp; npm install protractor, и теперь он работает.

Ответ №3:

Для macOS Catalina версии 10.15.6 (19G73)

В моем случае я работал с Rails и Capybara для тестирования функций. То, что сработало для меня, было

  1. Сначала найдите фактическое местоположение запущенного chromedriver:
  2. Затем установите chromedriver через Homebrew:
  3. Затем удалите старую ссылку на chromedriver, найденную в предыдущем местоположении с помощью:
  4. Теперь свяжите старую ссылку chromedriver с той, которая установлена с brew:
  5. Затем откройте приложение Finder, затем нажмите «Перейти в меню», а затем нажмите Go to folder . «Опция» и введите этот маршрут:
  6. Там вы должны увидеть папку с установленной вами версией chromedriver, что-то вроде этого:
  7. Введите эту папку, и вы должны увидеть двоичный файл chromedriver.
  8. Щелкните по нему правой кнопкой мыши и нажмите Open

Теперь у вас должно появиться окно терминала с выводом:

  • Наконец, нажмите Ctrl C , чтобы остановить выполнение и выйти из окна терминала.
  • Теперь вы должны иметь возможность запускать тесты capybara.

    Комментарии:

    1. Это конкретный набор инструкций для обновления Chromedriver в Rails / Capybara framework, который может быть более общим ответом на вопрос «Как мне обновить Chromedriver в Rails / Capybara framework». Спасибо за вклад.

    Ответ №4:

    Ответ №5:

    Если вы используете webdrivers gem, обновите его:

    Источник

    Error: spawn Unknown system error -86 #23

    URL : https://melishev.ru
    Scenario : Default
    Iterations: 7 (Default)

    Error: spawn Unknown system error -86
    at ChildProcess.spawn (node:internal/child_process:412:11)
    at Object.spawn (node:child_process:698:9)
    at BrowserRunner.start (/Users/matvejmelishev/.npm/_npx/4f0bae50eb4a6363/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:91:34)
    at ChromeLauncher.launch (/Users/matvejmelishev/.npm/_npx/4f0bae50eb4a6363/node_modules/puppeteer/lib/cjs/puppeteer/node/Launcher.js:115:16)
    at async analyzeOptions (file:///Users/matvejmelishev/.npm/_npx/4f0bae50eb4a6363/node_modules/fuite/src/index.js:34:19)
    at async findLeaks (file:///Users/matvejmelishev/.npm/_npx/4f0bae50eb4a6363/node_modules/fuite/src/index.js:96:7)
    at async main (file:///Users/matvejmelishev/.npm/_npx/4f0bae50eb4a6363/node_modules/fuite/src/cli.js:87:20) <
    errno: -86,
    code: ‘Unknown system error -86’,
    syscall: ‘spawn’
    >

    The text was updated successfully, but these errors were encountered:

    I can’t repro on my machine (running fuite https://melishev.ru ). Can you confirm that a Puppeteer hello world works?

    @nolanlawson Most likely this is due to the fact that I have a Macbook M1

    Looks like you may be running into this error then? pa11y/pa11y#619 (comment) There is a suggestion there for how to fix it.

    Did you set a PUPPETEER_EXECUTABLE_PATH env var as described here? puppeteer/puppeteer#6622 (comment) Does it point to a valid Chromium installation?

    Источник

    Error on Apple Silicon #5816

    electron-builder version=22.10.5
    Cannot spawn /node_modules/app-builder-bin/mac/app-builder: Error: spawn Unknown system error -86

    The text was updated successfully, but these errors were encountered:

    Can you please run with DEBUG=electron-builder set so that we can have more logs here?

    My guess is that node_modules/app-builder-bin/mac/app-builder is an Intel only binary, investigating further now.

    That was indeed the issue, filed an upstream issue report here: develar/app-builder#56

    Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

    This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

    This is still relevant.

    The upstream issue haven’t gotten any feedback though: develar/app-builder#56

    Hmmm, I just tested this on my M1 and it seems to have worked correctly. Maybe this is an env issue, such as requiring Rosetta installed? I’m quite puzzled on the error here ¯_(ツ)_/¯. Can you create a minimum reproducible gist or repo and I can test it locally and maybe provide a workaround for you.

    My project ran into an issue with our dependency, app-builder-bin, where it wasn’t recompiling native modules with a new architecture if it was previously built with another architecture. I switched to use electron-rebuild and looped it into electron-builder beforeBuild . Maybe that would work for your purposes?
    Snippet from electron-builder.js

    such as requiring Rosetta installed

    Sorry, should probably have specified that earlier. I do not have Rosetta available (and thus cannot run Intel binaries) and my goal is to have this working without Rosetta.

    The issue is blocked on app-builder only shipping Intel binaries. It’s written in Go so it should be quite straight forward to compile it for arm64 as well, I just haven’t had time to work on it.

    Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

    This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

    Still relevant, please reopen

    Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward?

    This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

    © 2023 GitHub, Inc.

    You can’t perform that action at this time.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

    Источник

    #macos #selenium #webdriver #selenium-chromedriver #apple-silicon

    #macos #селен #webdriver #selenium-chromedriver #apple-silicon

    Вопрос:

    Внезапно во второй половине дня 6 января 2021 года мои тесты Selenium Protractor в OSX перестали работать с загадочной ошибкой

     spawn Unknown system error -86
     

    Я провел некоторое исследование и обнаружил, что номер ошибки 86 совпадает с

     Bad CPU type in executable
     

    и выполнил следующее, чтобы сравнить архитектуру процессора моего двоичного файла chromedriver с моей системой:

     % file chromedriver_87.0.4280.88
    chromedriver_87.0.4280.88: Mach-O 64-bit executable arm64
    % uname -a
    Darwin kobl179273m 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
    % uname -p
    i386
     

    Как я могу исправить двоичный файл chromedriver, используемый моим Selenium, чтобы он запускался на моем Intel x64 mac и очищал сообщение «системная ошибка -86» или «Неправильный тип процессора»?

    Комментарии:

    1. Похоже, что chromedriver теперь поддерживает архитектуру Apple Silicon ARM, а «обновление webdriver-manager —versions.chrome=<version>» теперь всегда использует сборку chromedriver arm64 из chromedriver.storage.googleapis.com вместо сборки x86_64. Я пытаюсь выяснить, как заставить webdriver-manager вместо этого загрузить сборку intel x86.

    2. Проблема в том, что до версии chrome 86 была только одна версия для mac64 chromedriver. Но начиная с версии Chrome 87. Для chrome mac64 и mac64_ml есть два двоичных файла. Загружается только mac64_ml, который предназначен для arm64 arch, поэтому исправление необходимо выполнить в webdriver_manager chrome_xml.js .

    3. Существует открытая проблема. github.com/angular/webdriver-manager/issues/476

    4. Кстати, совершенно случайно, что код ошибки 86 можно исправить, откатившись к Chrome 86

    Ответ №1:

    Проблема описана в https://github.com/angular/webdriver-manager/issues/476 . Теперь это исправлено в 12.1.8, поэтому просто обновите этот webdriver manager.

    Для большинства пользователей это может быть достигнуто с помощью

     npm uninstall protractor amp;amp; npm install protractor
     

    Комментарии:

    1. Я запустил новую npm install версию с последней версией Protractor, и это исправило ее. Спасибо.

    2. Я отмечаю это как предпочтительный ответ, поскольку, хотя информация в моем другом ответе может быть полезна всем, кто в будущем получит unkonwn system error -86, для большинства людей, которые видят ошибку из-за выпуска Chromedriver _m1 Silicon Arm, самым простым решением будет продолжить и обновитьк более новой версии protractor и webdriver-manager, которая исправляет это.

    3. Для некоторых это может быть здравым смыслом, но мне пришлось зайти в usr/local/lib/node_modules моего mac и удалить webdriver-manager каталог перед запуском npm install . После того, как я это сделал, все заработало. Кстати, повторная установка оказалась в корзине моего недавно установленного каталога .nvm, найденного при запуске which webdriver-manager .

    Ответ №2:

    Редактировать: этот ответ следует считать устаревшим теперь, когда основная ошибка в webdriver-manager была исправлена. Лучшим решением было бы перейти на новейшую версию webdriver-manager. Приведенный ниже ответ может быть полезен, если людям нужно использовать более старую версию webdriver-manager, в которой все еще есть ошибка.

    Согласно комментарию Дипака Шринивасана выше, эта ошибка вызвана https://github.com/angular/webdriver-manager/issues/476

    Основная причина: команда ChromeDriver добавила «_m1» в конец имени файла для своих Apple Silicon ARM-версий Chromedriver, но и в версиях chromedriver для Silicon, и для Intel в имени файла указано «mac64», а номер версии точно такой же. Это приводит к тому, что webdriver-manager всегда загружает кремниевую сборку Chromedriver, даже на компьютерах Intel Mac. В качестве общего решения просто избегайте использования chromedriver с именем файла _m1, если вы используете Intel Mac.

    Решение 1. Понизьте версию до Chrome 86.0.4240.198 и Chromedriver 86.0.4240.22. Эти версии работают вместе и являются самыми последними версиями до появления новой и проблемной поддержки Silicon ARM.

    Страница загрузки Chrome 86: https://google-chrome.en.uptodown.com/mac/download/2920124

    Отключить автоматическое обновление в Chrome: https://superuser.com/questions/1359017/how-do-i-disable-automatic-updates-of-google-chrome-on-mac-os-x

    Хромированный привод 86: https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22 /

     % webdriver-manager update --versions.chrome=86.0.4240.22
     

    Решение 2. Измените пакет npm webdriver-manager, чтобы указать на правильный chromedriver (спасибо ciekaway со страницы проблем angular github за это исправление)

    Измените следующий файл

     node_modules/webdriver-manager/built/lib/files/file_manager.js
     

    или, если используется транспортир

     node_modules/protractor/node_modules/webdriver-manager/built/lib/files/file_manager.js
     

    В верхней части метода DownloadFile около строки 166 добавьте следующую строку, чтобы удалить «_m1» из имени файла:

     fileUrl.url = fileUrl.url.replace(/_m1/, '');
     

    Это должно быть после начала .затем блок, который начинается с

     binary.getUrl(binary.version()).then(fileUrl => {
     

    это также должно быть перед следующей ссылкой на fileURL.
    Например:

     binary.getUrl(binary.version()).then(fileUrl => {
        binary.versionCustom = fileUrl.version;
        fileUrl.url = fileUrl.url.replace(/_m1/, '');
        let filePath = path.resolve(outputDir, binary.filename());
     

    Обратите внимание, что это решение является временным. Он будет перезаписан при установке npm. Chromedriver и / или команда webdriver-manager, вероятно, устранят эту проблему, после чего вам следует очистить модифицированную версию вашего webdriver-manager и загрузить исправление из npm.

    Комментарии:

    1. Пытался сделать это с помощью решения 1, но позже получил ошибку при попытке запустить тест транспортира. Ошибка: E / launcher — SessionNotCreatedError: не удалось создать новую службу: ChromeDriverService. Информация о драйвере: driver.version: неизвестно

    2. Оказалось, мне пришлось указать версию, например: webdriver-manager start —versions.chrome 86.0.4240.22

    3. Я попробовал решение 1, но я получаю ту же ошибку, что и @user1328889. Я использовал ./node_modules/.bin/webdriver-manager start —versions.chrome= 86.0.4240.198, но это дало мне эту ошибку: E /start — Selenium Standalone отсутствует. Установка с обновлением webdriver-manager — автономная. Я вижу selenium-server-standalone-3.141.59.jar однако в моей папке selenium.

    4. Еще одна проблема с решением № 1 заключается в том, что Chrome продолжает автоматическое обновление до версии 88 даже после отключения обновлений. В настройках Chrome отображается 86, но при щелчке правой кнопкой мыши на информации о приложении вы можете увидеть, что версия 88. Из-за этого тесты завершаются с ошибкой: essionNotCreatedError: сессия не создана: эта версия ChromeDriver поддерживает только версию Chrome 86 Текущая версия браузера 88.0.4324.96 с двоичным путем / Applications/ Google Chrome.app/Contents/ macOS / Google Chrome

    5. Спасибо @emery. Я попробовал npm uninstall protractor amp;amp; npm install protractor, и теперь он работает.

    Ответ №3:

    Для macOS Catalina версии 10.15.6 (19G73)

    В моем случае я работал с Rails и Capybara для тестирования функций. То, что сработало для меня, было

    1. Сначала найдите фактическое местоположение запущенного chromedriver:
       which chromedriver
      
      # Which returned:
      
      /Users/alex/.webdrivers/chromedriver
       
    2. Затем установите chromedriver через Homebrew:
       brew install chromedriver
       
    3. Затем удалите старую ссылку на chromedriver, найденную в предыдущем местоположении с помощью:
       rm /Users/alex/.webdrivers/chromedriver
       
    4. Теперь свяжите старую ссылку chromedriver с той, которая установлена с brew:
       ln -s /usr/local/bin/chromedriver /Users/alex/.webdrivers/chromedriver
       
    5. Затем откройте приложение Finder, затем нажмите «Перейти в меню», а затем нажмите Go to folder ... «Опция» и введите этот маршрут:
       /usr/local/Caskroom/chromedriver/
       
    6. Там вы должны увидеть папку с установленной вами версией chromedriver, что-то вроде этого:
       88.0.4324.96
       
    7. Введите эту папку, и вы должны увидеть двоичный файл chromedriver.
    8. Щелкните по нему правой кнопкой мыши и нажмите Open

      Теперь у вас должно появиться окно терминала с выводом:

       Last login: Sun Jan 31 12:29:15 on ttys001
      /usr/local/Caskroom/chromedriver/88.0.4324.96/chromedriver ; exit;
         ~  /usr/local/Caskroom/chromedriver/88.0.4324.96/chromedriver ; exit;
      Starting ChromeDriver 88.0.4324.96 (68dba2d8a0b149a1d3afac56fa74648032bcf46b-    refs/branch-heads/4324@{#1784}) on port 9515
      Only local connections are allowed.
      Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
      ChromeDriver was started successfully.
       
    9. Наконец, нажмите Ctrl C , чтобы остановить выполнение и выйти из окна терминала.

    Теперь вы должны иметь возможность запускать тесты capybara.

    Комментарии:

    1. Это конкретный набор инструкций для обновления Chromedriver в Rails / Capybara framework, который может быть более общим ответом на вопрос «Как мне обновить Chromedriver в Rails / Capybara framework». Спасибо за вклад.

    Ответ №4:

     npm uninstall protractor amp;amp; npm install protractor
     

    Ответ №5:

    Если вы используете webdrivers gem, обновите его:

     bundle update webdrivers
     

    Edit: this answer should be considered deprecated now that the underlying bug in webdriver-manager has been fixed. A better solution would be to upgrade to the newest version of webdriver-manager. The answer below may be useful if people need to use an older version of webdriver-manager which still has the bug.

    As per Deepak Srinivasan’s comment above, this error is caused by https://github.com/angular/webdriver-manager/issues/476

    Root Cause:
    The ChromeDriver team added «_m1» to the end of the filename for their Apple Silicon ARM builds of Chromedriver — but both the Silicon and Intel versions of chromedriver have «mac64» in the filename, and the version number is exactly the same. This causes webdriver-manager to always download the Silicon build of Chromedriver, even on Intel macs. As a general solution, simply avoid using the chromedriver that has _m1 in its filename if you are on an Intel mac.

    Solution 1: Downgrade to Chrome 86.0.4240.198 and Chromedriver 86.0.4240.22. These versions work together and are the most recent versions prior to the new and problematic support for Silicon ARM

    Chrome 86 download page:
    https://google-chrome.en.uptodown.com/mac/download/2920124

    Disable auto-updates in Chrome: https://superuser.com/questions/1359017/how-do-i-disable-automatic-updates-of-google-chrome-on-mac-os-x

    Chromedriver 86: https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22/

    % webdriver-manager update --versions.chrome=86.0.4240.22
    

    Solution 2: Modify the webdriver-manager npm package to point to the correct chromedriver (thanks to ciekaway from the angular github issue page for this fix)

    Modify the following file

    node_modules/webdriver-manager/built/lib/files/file_manager.js
    

    or, if using protractor

    node_modules/protractor/node_modules/webdriver-manager/built/lib/files/file_manager.js
    

    Near the top of the downloadFile method around line 166, add the following line to remove «_m1» from the name of the file:

    fileUrl.url = fileUrl.url.replace(/_m1/, '');
    

    It needs to be after the beginning of the .then block that starts with

    binary.getUrl(binary.version()).then(fileUrl => {
    

    it also needs to be before the next reference to fileUrl.
    For example:

    binary.getUrl(binary.version()).then(fileUrl => {
        binary.versionCustom = fileUrl.version;
        fileUrl.url = fileUrl.url.replace(/_m1/, '');
        let filePath = path.resolve(outputDir, binary.filename());
    

    Note that this solution is temporary. It will be overwritten by an npm install. The Chromedriver and/or the webdriver-manager team will probably fix this issue, at which point you should clear the modified version of your webdriver-manager and download the fix from npm.

    The issue is described in https://github.com/angular/webdriver-manager/issues/476.
    This has been now fixed in 12.1.8 so just update to that webdriver manager.

    Edit: this answer should be considered deprecated now that the underlying bug in webdriver-manager has been fixed. A better solution would be to upgrade to the newest version of webdriver-manager. The answer below may be useful if people need to use an older version of webdriver-manager which still has the bug.

    As per Deepak Srinivasan’s comment above, this error is caused by https://github.com/angular/webdriver-manager/issues/476

    Root Cause:
    The ChromeDriver team added «_m1» to the end of the filename for their Apple Silicon ARM builds of Chromedriver — but both the Silicon and Intel versions of chromedriver have «mac64» in the filename, and the version number is exactly the same. This causes webdriver-manager to always download the Silicon build of Chromedriver, even on Intel macs. As a general solution, simply avoid using the chromedriver that has _m1 in its filename if you are on an Intel mac.

    Solution 1: Downgrade to Chrome 86.0.4240.198 and Chromedriver 86.0.4240.22. These versions work together and are the most recent versions prior to the new and problematic support for Silicon ARM

    Chrome 86 download page:
    https://google-chrome.en.uptodown.com/mac/download/2920124

    Disable auto-updates in Chrome: https://superuser.com/questions/1359017/how-do-i-disable-automatic-updates-of-google-chrome-on-mac-os-x

    Chromedriver 86: https://chromedriver.storage.googleapis.com/index.html?path=86.0.4240.22/

    % webdriver-manager update --versions.chrome=86.0.4240.22
    

    Solution 2: Modify the webdriver-manager npm package to point to the correct chromedriver (thanks to ciekaway from the angular github issue page for this fix)

    Modify the following file

    node_modules/webdriver-manager/built/lib/files/file_manager.js
    

    or, if using protractor

    node_modules/protractor/node_modules/webdriver-manager/built/lib/files/file_manager.js
    

    Near the top of the downloadFile method around line 166, add the following line to remove «_m1» from the name of the file:

    fileUrl.url = fileUrl.url.replace(/_m1/, '');
    

    It needs to be after the beginning of the .then block that starts with

    binary.getUrl(binary.version()).then(fileUrl => {
    

    it also needs to be before the next reference to fileUrl.
    For example:

    binary.getUrl(binary.version()).then(fileUrl => {
        binary.versionCustom = fileUrl.version;
        fileUrl.url = fileUrl.url.replace(/_m1/, '');
        let filePath = path.resolve(outputDir, binary.filename());
    

    Note that this solution is temporary. It will be overwritten by an npm install. The Chromedriver and/or the webdriver-manager team will probably fix this issue, at which point you should clear the modified version of your webdriver-manager and download the fix from npm.

    npm uninstall protractor && npm install protractor
    

    Внезапно днем ​​6 января 2021 года мои тесты Selenium Protractor под OSX перестали работать с загадочной ошибкой.

    spawn Unknown system error -86
    

    Я провел небольшое исследование и обнаружил, что номер ошибки 86 совпадает с

    Bad CPU type in executable
    

    И выполнил следующее, чтобы сравнить архитектуру процессора моего двоичного файла chromedriver с моей системой:

    % file chromedriver_87.0.4280.88
    chromedriver_87.0.4280.88: Mach-O 64-bit executable arm64
    % uname -a
    Darwin kobl179273m 19.6.0 Darwin Kernel Version 19.6.0: Thu Oct 29 22:56:45 PDT 2020; root:xnu-6153.141.2.2~1/RELEASE_X86_64 x86_64
    % uname -p
    i386
    

    Как я могу исправить двоичный файл chromedriver, используемый моим Selenium, чтобы он работал на моем Mac Intel x64 и сбрасывал сообщение «системная ошибка -86» или «Плохой тип процессора»?

    2 ответа

    Лучший ответ

    Проблема описана в github.com/angular/webdriver-manager/issues/476. Теперь это исправлено в версии 12.1.8, поэтому просто обновите этот менеджер веб-драйверов.


    7

    Deepak Srinivasan
    19 Янв 2021 в 07:48

    Согласно приведенному выше комментарию Дипака Сринивасана, эта ошибка вызвана https://github.com/angular / webdriver-manager / issues / 476

    Основная причина:
    Команда ChromeDriver добавила «_m1» в конец имени файла для своих сборок Chromedriver для Apple Silicon ARM, но в обоих версиях chromedriver Silicon и Intel в имени файла есть «mac64», а номер версии точно такой же. Это заставляет webdriver-manager всегда загружать кремниевую сборку Chromedriver, даже на компьютерах Intel Mac. В качестве общего решения просто избегайте использования chromedriver с _m1 в имени файла, если вы используете Intel Mac.

    Решение 1. Перейдите на Chrome 86.0.4240.198 и Chromedriver 86.0.4240.22. Эти версии работают вместе и являются самыми последними версиями, предшествующими новой и проблематичной поддержке Silicon ARM.

    Страница загрузки Chrome 86:
    https://google-chrome.en.uptodown.com/mac/download/2920124

    Отключить автоматические обновления в Chrome: https://superuser.com/questions/1359017/how-do-i-disable-automatic-updates-of-google-chrome-on-mac-os-x

    Chromedriver 86: https://chromedriver.storage.googleapis.com/index .html? path = 86.0.4240.22 /

    % webdriver-manager update --versions.chrome=86.0.4240.22
    

    Решение 2 . Измените пакет npm webdriver-manager, чтобы он указывал на правильный хромированный драйвер (спасибо ciekaway из angular страница проблемы с github для этого исправления)

    Измените следующий файл

    node_modules/webdriver-manager/built/lib/files/file_manager.js
    

    Или, если используется транспортир

    node_modules/protractor/node_modules/webdriver-manager/built/lib/files/file_manager.js
    

    В верхней части метода downloadFile около строки 166 добавьте следующую строку, чтобы удалить «_m1» из имени файла:

    fileUrl.url = fileUrl.url.replace(/_m1/, '');
    

    Он должен быть после начала блока .then, который начинается с

    binary.getUrl(binary.version()).then(fileUrl => {
    

    Он также должен быть перед следующей ссылкой на fileUrl.
    Например:

    binary.getUrl(binary.version()).then(fileUrl => {
        binary.versionCustom = fileUrl.version;
        fileUrl.url = fileUrl.url.replace(/_m1/, '');
        let filePath = path.resolve(outputDir, binary.filename());
    

    Обратите внимание, что это временное решение. Он будет перезаписан установкой npm. Команда Chromedriver и / или команда webdriver-manager, вероятно, исправят эту проблему, после чего вам следует очистить измененную версию вашего webdriver-manager и загрузить исправление из npm.


    8

    emery
    8 Янв 2021 в 17:20

    Понравилась статья? Поделить с друзьями:
  • Spark system error signal перевод
  • Spark reloaded ident error
  • Spamassassin unknown error code 3 from sa update
  • Spacedesk код ошибки 2 5
  • Spacedesk как изменить разрешение