Khi chạy WebDriver với trình duyệt Chrome, nhận được thông báo "Chỉ cho phép kết nối cục bộ" mặc dù trình duyệt khởi chạy đúng cách


86

Khi tôi chạy trình duyệt Chrome bằng WebDriver, tôi nhận được thông báo sau trên bảng điều khiển. Xin vui lòng cho tôi biết làm thế nào để giải quyết nó.

"Khởi động ChromeDriver (v2.10.267521) trên cổng 22582" "Chỉ cho phép kết nối cục bộ".

Đây là mã mẫu của tôi:

public class Browserlaunch {
    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32   \\chromedriver.exe");
        WebDriver driver = new ChromeDriver() ;
        driver.get("http://webdunia.com");
        driver.close();
        driver.quit();
    }
}

Câu trả lời:


96

Đây là tin nhắn mang thông tin đơn thuần. Thông báo cho bạn biết là trình thực thi chromedriver sẽ chỉ chấp nhận các kết nối từ máy cục bộ.

Hầu hết các triển khai trình điều khiển (chắc chắn là trình điều khiển Chrome và trình điều khiển IE) đều tạo ra một máy chủ HTTP. Các ràng buộc ngôn ngữ (Java, Python, Ruby, .NET, v.v.) đều sử dụng giao thức JSON-over-HTTP để giao tiếp với trình điều khiển và tự động hóa trình duyệt. Vì máy chủ HTTP chỉ đơn giản là lắng nghe trên một cổng mở cho các yêu cầu HTTP được tạo bởi các ràng buộc ngôn ngữ, các kết nối đến máy chủ HTTP bắt đầu bởi các ràng buộc ngôn ngữ chỉ được phép đến từ các quá trình khác trên cùng một máy chủ. Lưu ý cẩn thận rằng giới hạn này không áp dụng cho các kết nối mà trình duyệt có thể thực hiện với các trang web bên ngoài; thay vào đó nó chỉ đơn giản là ngăn các kết nối đến từ các trang web khác.


Trong trường hợp của tôi, thử nghiệm dừng sau khi mở trình duyệt và trang trống. Trong url Not secure data:, Vì vậy, theo nghĩa đó, đây là một vấn đề. Bạn có bất kỳ ý tưởng tại sao?
SMPH

vì vậy nếu tôi truy cập một trang web sử dụng giao tiếp https với selenium bằng driver.get ( vv ... ) thì điều đó có nghĩa là thông tin được gửi đến trang web đó được mã hóa bằng https?
Mike Sandstrom

Giao tiếp HTTP (không được bảo mật) được đề cập trong câu trả lời này là giữa các ràng buộc ngôn ngữ (mã Selenium của bạn trong Java, C #, Python, v.v.) và trình điều khiển trình duyệt (chromedriver, geckodriver, v.v.). Giao tiếp giữa trình duyệt và trang web là không thay đổi. Nếu bạn đang sử dụng HTTPS trong trình duyệt, giao tiếp giữa trình duyệt và máy chủ web vẫn phải được mã hóa.
JimEvans

Tôi gặp sự cố tương tự: / Sự cố này đã bao giờ được khắc phục chưa?
user3430861

13

Tôi đã nhận được các lỗi giống hệt nhau. Tôi đã chiến đấu với vấn đề này trong vài giờ hôm nay. Nó dường như được gây ra bởi sự không khớp giữa các phiên bản của chromedriver và selen-server-độc lập. Tệp config.js đang tham chiếu đến một thư mục có chromedriver 2.9 và selenium-server-standalone 2.35.0. Khi tôi đảm bảo rằng chúng tôi đang tham chiếu 2.10 và 2.42.2, nó đã hoạt động.


13

Không nhất thiết phải là phương pháp hay nhất, nhưng môi trường của tôi là một mạng cục bộ với một số máy cần quyền truy cập vào selen.

Khi chạy chromedriver, bạn có thể chuyển qua một tham số như sau:

chromedriver --whitelisted-ips=""

Về cơ bản, điều này sẽ đưa tất cả IP vào danh sách trắng, tất nhiên không phải lúc nào cũng là giải pháp lý tưởng và hãy cẩn thận với nó cho môi trường sản xuất, nhưng bạn sẽ được đưa ra một cảnh báo chi tiết:

Khởi động ChromeDriver 2.16.333244 (15fb740a49ab3660b8f8d496cfab2e4d37c7e6ca) trên cổng 9515 Tất cả các kết nối từ xa đều được phép. Sử dụng một danh sách trắng để thay thế!

Một công việc tốt nhất, nhưng nó hoạt động.

Đăng ký tương đối


5

Điều này đã xảy ra với tôi khi tôi phải sửa chữa một dự án cũ đã không được xem xét trong một thời gian. Trình điều khiển sắc độ được liên kết với dự án không tương thích với phiên bản chrome của tôi, vì vậy khi tôi cập nhật trình điều khiển sắc độ, nó hoạt động tốt.


3

Đây là tin nhắn mang thông tin đơn thuần. Điều đó không có nghĩa gì nếu tập lệnh thử nghiệm và trình điều khiển sắc độ của bạn nằm trên cùng một máy thì bạn có thể thêm tùy chọn "whitelisted-ips". Thử nghiệm của bạn sẽ chạy tốt. Tuy nhiên, nếu bạn sử dụng trình xử lý sắc ký trong thiết lập lưới, thông báo này sẽ không xuất hiện


3
làm cách nào để thêm người anh em này - "whitelisted-ips". Tôi đang gặp vấn đề tương tự
Tanvir

2
Cách thêm danh sách trắng. tôi đang sử dụng cửa sổ. Cảm ơn
garlapak

1

Tôi phải chạy các lệnh của mình trong một và cùng một thiết bị đầu cuối, không phải riêng biệt.

nohup sudo Xvfb :10 -ac
export DISPLAY=:10
java -jar vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar -Dwebdriver.chrome.bin="/usr/bin/google-chrome" -Dwebdriver.chrome.driver="vendor/bin/chromedriver"

1

Lỗi này rất thường xuyên xuất hiện nếu bạn sử dụng các phiên bản không tương thích của Selenium và ChromeDriver.

Selenium 3.0.1 cho dự án Maven:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.0.1</version>
    </dependency>

ChromeDriver 2.27: https://sites.google.com/a/chromium.org/chromedriver/downloads


1
Bạn nên giải thích cách anh ấy có thể giải quyết vấn đề của mình. Bạn chỉ cần xác định vấn đề nhưng làm thế nào để giải quyết điều này? Ví dụ: phiên bản nào là tương thích?
Sebi

1
Tôi sử dụng sự kết hợp này: selen-java 3.0.1 + ChromeDriver 2,27 (Nó hỗ trợ Chrome v54-56)
Vitali Nikolaenko

1

Sau hàng giờ phân tích đọc hàng tấn nhật ký và mã nguồn, cuối cùng đã tìm thấy vấn đề. Và nó là khá dễ dàng để giải quyết nó.

trong dòng sinle: bạn cần chuyển --whitelisted-ips = vào các tệp thực thi của trình điều khiển chrome (không phải chrome!)

Bạn có thể làm điều đó bằng một số cách:

Nếu bạn sử dụng ChromeDriver cục bộ / trực tiếp từ mã, chỉ cần chèn các dòng bên dưới trước khi bắt đầu ChromeDriver

    System.setProperty("webdriver.chrome.whitelistedIps", "");

Nếu bạn sử dụng nó từ xa (ví dụ: trung tâm / lưới selen), bạn cần đặt thuộc tính hệ thống khi nút khởi động, như trong lệnh:

java -Dwebdriver.chrome.whitelistedIps= testClass etc...

hoặc docker bằng cách chuyển JAVA_OPTSenv

  chrome:
    image: selenium/node-chrome:3.141.59
    container_name: chrome
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

0

Chromedriver là một WebDriver. WebDriver là một công cụ mã nguồn mở để kiểm tra tự động các ứng dụng web trên nhiều trình duyệt. Nó cung cấp các khả năng điều hướng đến các trang web, nhập liệu của người dùng, thực thi JavaScript và hơn thế nữa. Khi bạn chạy trình điều khiển này, nó sẽ cho phép các tập lệnh của bạn truy cập vào trình điều khiển này và chạy các lệnh trên Google Chrome.

Điều này có thể được thực hiện thông qua các tập lệnh chạy trong mạng cục bộ ( Only local connections are allowed.) hoặc qua các tập lệnh chạy trên các mạng bên ngoài ( All remote connections are allowed.). Luôn an toàn hơn khi sử dụng tùy chọn Kết nối cục bộ. Theo mặc định, Chromedriver của bạn có thể truy cập qua cổng 9515.

Để trả lời câu hỏi, nó chỉ là một tin nhắn thông tin. Bạn không phải lo lắng về điều đó.

Dưới đây là cả hai tùy chọn.

$ chromedriver

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) 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.

Điều này là bằng cách lập danh sách trắng tất cả các IP.

$ chromedriver --whitelisted-ips=""

Starting ChromeDriver 83.0.4103.39 (ccbf011cb2d2b19b506d844400483861342c20cd-refs/branch-heads/4103@{#416}) on port 9515
All remote connections are allowed. Use a whitelist instead!
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.

-4

Tôi đã giải quyết lỗi này bằng cách cài đặt trình điều khiển trình duyệt:

  1. Điều hướng trình duyệt của bạn đến trang web seleniumhq.org
  2. Chọn tab Tải xuống
  3. Cuộn xuống trang đến phần Trình duyệt và tải xuống trình điều khiển bạn muốn bằng cách nhấp vào liên kết, ví dụ: Trình điều khiển Google Chrome
  4. Bấm đúp vào tệp đã tải xuống, ví dụ: chromedriver_mac64 (1) .zip
  5. Bấm đúp vào tệp được giải nén, ví dụ: chromedriver

Tham khảo: tìm kiếm trên YouTube.com để biết lỗi

Nền tảng: macOS High Sierra 10.13.3

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.