8

Я следующая проблемаОшибка регистрации PhantomJS узла в Selenium Grid

  • Я успешно запустил Селен сетки концентратор с:

java -jar selenium-server-standalone-2.53.0.jar -role hub

  • После этого я попытался запустить PhantomJS узел с:

phantomjs --webdriver=8090 --webdriver-selenium-grid-hub=http://localhost:4444


но получил ошибку:

[INFO - 2016-03-25T13:56:28.397Z] GhostDriver - Main - running on port 8090 [INFO - 2016-03-25T13:56:28.397Z] GhostDriver - Main - registering to Selenium HUB ' http://localhost:4444 ' version: using '127.0.0.1:8090' with org.openqa.grid.selenium.proxy.DefaultRemoteProxy as remote proxy. [ERROR - 2016-03-25T13:56:28.400Z] GhostDriver - main.fail - {"line":97,"sourceURL":"phantomjs://platform/hub_register.js","stack":"[email protected]://platform/hub_register.js:97:79\nglobal [email protected]://code/main.js:78:37"}

phantomjs://platform/console++.js:263 in error

Стандартный узел работает нормально, но PhantomJS failes. Что я делаю неправильно?

ответ

5

обходной *** д/л Источник из phantomjs http://phantomjs.org/build.html и редактировать hub_register.js в SRC/ghostdriver Закомментируйте линий, как показано ниже:

// вар ghostdriver = ghostdriver || {};

return { 
    capabilities: [{ 
     browserName: "phantomjs", 
     version: version, 
     //platform: ghostdriver.system.os.name + '-' + ghostdriver.system.os.version + '-' + ghostdriver.system.os.architecture, 
     maxInstances: 1, 
     seleniumProtocol: "WebDriver" 

скомпилируйте и все работает!

ярлык: https://github.com/darwin10/phantomjs

Первоисточник: https://github.com/detro/ghostdriver/issues/394

+0

Большое спасибо) Скачано .zip из [здесь]: https://github.com/darwin10/phantomjs Запущенный 'build.sh' Запущенный PhantomJS узел Все отлично работает для меня) Одна вещь - я не знаю, достаточно ли она достаточно стабильна (фантомная версия 2.0.1-разработка), но это совсем другой вопрос. – uCodista

0

Я была такая же проблема. Вместо того, чтобы загружать исходный код и компилировать, как было предложено Ojen G., я использовал fix posted by neuro-sys, чтобы внести изменения в исполняемый файл. Моя ОС - Ubuntu 16.04.

  1. Скачать программу replacestrings.c.

    wget https://gist.githubusercontent.com/neuro-sys/3bf00b6cf28a93e07e44/raw/52f715fd49fbd271a9450b61d5cd3cf29907a5a0/replacestring.c 
    
  2. Программа Compile

    gcc replacestring.c -o replacestring 
    
  3. Заменить исходную строку кода Java в двоичной системе, создавая фиксированный двоичную.

    ./replacestring "$(strings /usr/lib/phantomjs/phantomjs | grep "platform: ghostdriver")" " " </usr/lib/phantomjs/phantomjs> f_phantomjs 
    
  4. Сделать двоичный исполняемый файл; и поставить в качестве замены

    chmod +x f_phantomjs 
    sudo chown root:root f_phantomjs 
    sudo mv f_phantomjs /usr/lib/phantomjs 
    cd /usr/lib/phantomjs 
    sudo echo "Fixed error in phantomjs; old file in e_phantomjs" > README.txt 
    sudo mv phantomjs e_phantomjs 
    sudo ln f_phantomjs phantomjs 
    

После этих шагов, он работает хорошо (Selenium хаб уже работает):

phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=http://localhost:4444 
[INFO - 2016-05-07T16:33:35.534Z] GhostDriver - Main - running on port 8080 
[INFO - 2016-05-07T16:33:35.534Z] GhostDriver - Main - registering to Selenium HUB 'http://localhost:4444' version: using '127.0.0.1:8080' with org.openqa.grid.selenium.proxy.DefaultRemoteProxy as remote proxy. 
[INFO - 2016-05-07T16:33:35.604Z] HUB Register - register - Registered with grid hub: http://localhost:4444/ (ok) 
+0

replacestring не работал, но редактирование бинарного файла делало трюк – MrE

0

Попробуйте заменить Localhost с локальным IP

phantomjs --webdriver=8090 --webdriver-selenium-grid-hub=http://localhost:4444

с

phantomjs --webdriver=8090 --webdriver-selenium-grid-hub=http://127.0.0.1:4444

0

После этого сути: https://gist.github.com/neuro-sys/41e368839a9b20dafb34

Редактирование двоичного файла поставить // перед обижая линию работал для меня, но не строки заменить вещь.

-> Следуйте часть об использовании hdex

Поиск platform:

и заменить //atform:

заменой букв pl с // (2F2F в шестнадцатеричном)

4

Для тех, кто еще посмотрите, есть ли linux и windows x64, доступные здесь, с обходным решением v2.1.1 (сборка окон включена запрос тянуть - шестнадцатеричный редактор обходного путь не будет работать для окон потому, что .exe являются сжатыми)

https://github.com/mrorgues/PhantomJSCustomEdition

1

Вы можете переопределить часть двоичного файла с помощью команды dd.
Я собираюсь заменить platform: с //atform::

$ cp /usr/local/bin/phantomjs . 

$ ./phantomjs --version 
2.1.1 

$ xxd -c 16 phantomjs | grep -C 2 'platform:' 
01c6aaa0: 7273 696f 6e3a 2076 6572 7369 6f6e 2c0a rsion: version,. 
01c6aab0: 2020 2020 2020 2020 2020 2020 2020 2020 
01c6aac0: 706c 6174 666f 726d 3a20 6768 6f73 7464 platform: ghostd 
01c6aad0: 7269 7665 722e 7379 7374 656d 2e6f 732e river.system.os. 
01c6aae0: 6e61 6d65 202b 2027 2d27 202b 2067 686f name + '-' + gho 

$ printf '//' | dd of=phantomjs conv=notrunc bs=1 seek=$((0x01c6aac0+0)) 
2+0 records in 
2+0 records out 
2 bytes transferred in 0.000117 secs (17085 bytes/sec) 

$ xxd phantomjs | grep 'atform:' 
01c6aac0: 2f2f 6174 666f 726d 3a20 6768 6f73 7464 //atform: ghostd 

$ ./phantomjs --version 
2.1.1 

$ mv phantomjs /usr/local/bin/ 

Если вы не можете найти строку, попробуйте увеличить октетов в строке (xxd -c 256).

0

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

Итак ... Я, наконец, построил свое собственное решение, которое работает: https://github.com/madhavajay/selenium-node-phantomjs

Docker изображение madhavajay/селен узел-phantomjs

Он использует PhantomJS 2.1.1 Пользовательских сборки с фиксированным Ghostdriver, а затем мои собственные хитрости к последней вилке Ghostdriver, чтобы разрешить настраиваемый параметр --remoteHost, завернутый в контейнер Docker с настраиваемыми переменными среды.

Надеюсь, это спасет тех, кого я потерял.

Смежные вопросы