8

Tôi có vấn đề sau đâyLỗi đăng ký PhantomJS nút trong Selenium Grid

  • Tôi phóng thành công trung tâm Selenium Grid với:

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

  • Sau đó tôi đã cố gắng để khởi động PhantomJS nút với:

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


nhưng có Lỗi:

[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

nút tiêu chuẩn làm việc ok, nhưng PhantomJS failes. Tôi đang làm gì sai?

Trả lời

5

workaround *** d l nguồn/từ phantomjs http://phantomjs.org/build.html và chỉnh sửa hub_register.js trong src/ghostdriver bình luận ra dòng như hình dưới đây:

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

biên dịch và mọi thứ hoạt động!

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

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

+0

Thank you very much) Downloaded .zip từ [ở đây]: https://github.com/darwin10/phantomjs Ra mắt 'build.sh' PhantomJS Ra mắt nút Tất cả mọi thứ hoạt động tốt đối với tôi) Một điều - Tôi không biết liệu nó có đủ ổn định hay không (phiên bản ảo là 2.0.1-phát triển), nhưng đó là một câu hỏi khác. – uCodista

0

tôi đã cùng một vấn đề. Thay vì tải xuống mã nguồn và biên dịch, theo gợi ý của Ojen G., tôi đã sử dụng fix posted by neuro-sys để thực hiện thay đổi trong tệp thực thi. Hệ điều hành của tôi là Ubuntu 16.04.

  1. Tải xuống chương trình replacestrings.c.

    wget https://gist.githubusercontent.com/neuro-sys/3bf00b6cf28a93e07e44/raw/52f715fd49fbd271a9450b61d5cd3cf29907a5a0/replacestring.c 
    
  2. chương trình Compile

    gcc replacestring.c -o replacestring 
    
  3. Thay Java chuỗi mã nguồn trong hệ nhị phân, tạo ra nhị phân cố định.

    ./replacestring "$(strings /usr/lib/phantomjs/phantomjs | grep "platform: ghostdriver")" " " </usr/lib/phantomjs/phantomjs> f_phantomjs 
    
  4. Thực thi nhị phân; và đặt để thay thế

    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 
    

Sau khi các bước này, nó chạy tốt (Selenium hub đang chạy):

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 không hoạt động, nhưng chỉnh sửa nhị phân đã làm các trick – MrE

0

Hãy thử thay thế localhost với IP địa phương

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

với

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

0

Tiếp theo ý chính sau: https://gist.github.com/neuro-sys/41e368839a9b20dafb34

Chỉnh sửa nhị phân để đặt một // ở phía trước của dòng vi phạm làm việc cho tôi, nhưng không phải là chuỗi thay thế điều.

-> Thực hiện theo các phần về việc sử dụng hdex

Tìm kiếm platform:

và thay thế bằng //atform:

bằng cách thay thế các chữ cái pl với // (2F2F trong hex)

4

Đối với bất cứ ai vẫn tìm kiếm, có linux và windows x64 xây dựng sẵn ở đây với workaround của v2.1.1 (windows build is on đề nghị kéo - trình biên tập hex workaround sẽ không làm việc cho các cửa sổ cos của .exe là nén)

https://github.com/mrorgues/PhantomJSCustomEdition

1

Bạn thể ghi đè lên tập tin nhị phần của bằng lệnh dd.
tôi sẽ thay thế platform: với //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/ 

Nếu bạn không thể xác định vị trí các chuỗi, cố gắng tăng octet trên mỗi dòng (xxd -c 256).

0

Tôi đã dành 2 tháng cố gắng khắc phục vấn đề này, cố gắng hết sức có thể, vấn đề chính của tôi là nhiều giải pháp sẽ không kết nối với lưới và những giải pháp trong vùng chứa docker chỉ có thể kết nối với lưới cục bộ được lưu trữ trên cùng một máy chủ Docker.

Vì vậy ... Cuối cùng tôi xây dựng giải pháp của riêng mình mà công trình: https://github.com/madhavajay/selenium-node-phantomjs

Docker hình ảnh là madhavajay/selen-node-phantomjs

Nó sử dụng PhantomJS 2.1.1 Tuỳ chỉnh xây dựng với cố định Ghostdriver và sau đó tinh chỉnh của riêng tôi để các ngã ba mới nhất của Ghostdriver để cho phép một tùy chỉnh --remoteHost param tất cả các gói trong một Docker Container với các biến môi trường cấu hình.

Tôi hy vọng điều này sẽ giúp bạn tiết kiệm một số tuần bị mất.

Các vấn đề liên quan