Error registering PhantomJS node in Selenium Grid

前端 未结 7 2084
情歌与酒
情歌与酒 2021-02-08 10:10

I have the following problem

  • I successfully launched Selenium Grid hub with:

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

相关标签:
7条回答
  • 2021-02-08 10:21

    Following this gist: https://gist.github.com/neuro-sys/41e368839a9b20dafb34

    Editing the binary to put a // in front of the offending line worked for me, but not the string replace thing.

    -> Follow the part about using hdex

    Search for platform:

    and replace with //atform:

    by replacing the letters pl with // (2F2F in hex)

    0 讨论(0)
  • 2021-02-08 10:25

    You can override part of binary file with the dd command.
    I'm going to replace platform: with //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/
    

    If you cannot locate the string, try to increase octets per line (xxd -c 256).

    0 讨论(0)
  • 2021-02-08 10:25

    I had the same issue. Instead of downloading the source code and compiling, as suggested by Ojen G., I used a fix posted by neuro-sys to make the change in the executable. My OS is Ubuntu 16.04.

    1. Download replacestrings.c program.

      wget https://gist.githubusercontent.com/neuro-sys/3bf00b6cf28a93e07e44/raw/52f715fd49fbd271a9450b61d5cd3cf29907a5a0/replacestring.c
      
    2. Compile program

      gcc replacestring.c -o replacestring
      
    3. Replace Java source code string in binary, creating fixed binary.

      ./replacestring "$(strings /usr/lib/phantomjs/phantomjs | grep "platform: ghostdriver")" " " < /usr/lib/phantomjs/phantomjs > f_phantomjs
      
    4. Make binary executable; and put as replacement

      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
      

    After these steps, it runs fine (Selenium hub already running):

    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 讨论(0)
  • 2021-02-08 10:29

    workaround*** d/l source from phantomjs http://phantomjs.org/build.html and edit hub_register.js in the src/ghostdriver comment out lines as shown below:

    //var 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"
    

    compile and everything works!

    shortcut: https://github.com/darwin10/phantomjs

    Original Source : https://github.com/detro/ghostdriver/issues/394

    0 讨论(0)
  • 2021-02-08 10:31

    Try replacing localhost with local IP

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

    with

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

    0 讨论(0)
  • 2021-02-08 10:34

    I have spent 2 months trying to fix this problem, trying everything possible, my main issue was that many solutions won't connect to the grid, and ones that do are in docker containers what can only connect to a local grid hosted on the same Docker host.

    So... I finally built my own solution which works: https://github.com/madhavajay/selenium-node-phantomjs

    Docker image is madhavajay/selenium-node-phantomjs

    It uses PhantomJS 2.1.1 Custom Build with fixed Ghostdriver and then my own tweaks to the latest fork of Ghostdriver to allow a custom --remoteHost param all wrapped up in a Docker Container with configurable Environment Variables.

    I hope this saves someone the lost weeks I suffered.

    0 讨论(0)
提交回复
热议问题