Podczas uruchamiania WebDriver z przeglądarką Chrome pojawia się komunikat „Tylko połączenia lokalne są dozwolone”, mimo że przeglądarka uruchamia się poprawnie

86

Kiedy uruchamiam przeglądarkę Chrome za pomocą WebDriver, otrzymuję następujący komunikat na konsoli. Daj mi znać, jak rozwiązać ten problem.

„Uruchamianie ChromeDriver (v2.10.267521) na porcie 22582” „Dozwolone są tylko połączenia lokalne”.

Oto mój przykładowy kod:

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();
    }
}
user3899403
źródło

Odpowiedzi:

96

To jest tylko wiadomość informacyjna. Komunikat mówi ci, że plik wykonywalny chromedriver akceptuje tylko połączenia z komputera lokalnego.

Większość implementacji sterowników (na pewno sterownik Chrome i sterownik IE) tworzy serwer HTTP. Powiązania językowe (Java, Python, Ruby, .NET itp.) Używają protokołu JSON-over-HTTP do komunikacji ze sterownikiem i automatyzacji przeglądarki. Ponieważ serwer HTTP po prostu nasłuchuje na otwartym porcie żądań HTTP generowanych przez powiązania języka, połączenia z serwerem HTTP uruchomione przez powiązania języka mogą pochodzić tylko z innych procesów na tym samym hoście. Należy pamiętać, że to ograniczenie nie dotyczy połączeń, które przeglądarka może nawiązać z zewnętrznymi witrynami internetowymi; raczej po prostu zapobiega przychodzącym połączeniom z innych stron internetowych.

JimEvans
źródło
W moim przypadku test zatrzymuje się po otwarciu przeglądarki i strona jest pusta. W adresie URL Not secure data:, Więc w tym sensie jest to problem. Czy masz pojęcie, dlaczego?
SMPH
więc jeśli wchodzę na stronę internetową, która używa komunikacji https z selenem za pomocą driver.get ( etc ... ), czy to oznacza, że ​​informacje wysyłane do tej witryny są szyfrowane za pomocą https?
Mike Sandstrom
Komunikacja HTTP (niezabezpieczona), o której mowa w tej odpowiedzi, odbywa się między powiązaniami językowymi (kod Selenium w Javie, C #, Pythonie itp.) A sterownikiem przeglądarki (chromedriver, geckodriver itp.). Komunikacja między przeglądarką a witryną pozostaje niezmieniona. Jeśli używasz protokołu HTTPS w przeglądarce, komunikacja między przeglądarką a serwerem internetowym powinna być nadal szyfrowana.
JimEvans
Mam ten sam problem: / Czy ten problem został kiedykolwiek rozwiązany?
user3430861
13

Otrzymywałem dokładnie te same błędy. Walczyłem z tym problemem przez kilka godzin dzisiaj. Wydawało się, że jest to spowodowane niedopasowaniem między wersjami chromedriver i samodzielnym serwerem selenu. Plik config.js odwoływał się do katalogu, który zawierał chromedriver 2.9 i selenium-server-standalone 2.35.0. Kiedy upewniłem się, że odwołujemy się do 2.10 i 2.42.2, zadziałało.

newToSeleniumMate
źródło
13

Niekoniecznie najlepsza praktyka, ale moje środowisko było lokalną siecią z kilkoma maszynami, które potrzebowały dostępu do selenu.

Uruchamiając sterownik chromedriver, możesz przejść przez taki parametr:

chromedriver --whitelisted-ips=""

Spowoduje to w zasadzie białą listę wszystkich adresów IP, oczywiście nie zawsze jest to idealne rozwiązanie i należy zachować ostrożność w przypadku środowisk produkcyjnych, ale powinno zostać wyświetlone szczegółowe ostrzeżenie:

Uruchamianie ChromeDriver 2.16.333244 (15fb740a49ab3660b8f8d496cfab2e4d37c7e6ca) na porcie 9515 Wszystkie połączenia zdalne są dozwolone. Zamiast tego użyj białej listy!

W najlepszym razie obejście, ale działa.

Względne zameldowanie

Pogrindis
źródło
5

Przydarzyło mi się to, kiedy musiałem naprawić stary projekt, na który nie oglądano od jakiegoś czasu. Chromedriver powiązany z projektem nie był kompatybilny z moją wersją chrome, więc kiedy zaktualizowałem chromedriver działał dobrze.

Cawmag
źródło
3

To jest tylko wiadomość informacyjna. To nic nie znaczy, jeśli twoje skrypty testowe i chromedriver są na tym samym komputerze, możesz dodać opcję "whitelisted-ips". Twój test będzie działał poprawnie. Jeśli jednak używasz chromedriver w konfiguracji sieci, ten komunikat nie pojawi się

Vicky
źródło
3
jak dodać tego brata - "whitelisted-ips". Mam ten sam problem
Tanvir
2
Jak dodać whitelist-ips. używam systemu Windows. Dzięki
garlapak
1

Musiałem uruchamiać moje polecenia w tym samym terminalu, a nie osobno.

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"
Harry Bosh
źródło
1

Bardzo często ten błąd pojawia się, jeśli używasz niekompatybilnych wersji Selenium i ChromeDriver.

Selenium 3.0.1 dla projektu 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

Vitali Nikolaenko
źródło
1
Powinieneś wyjaśnić, jak może rozwiązać swój problem. Po prostu identyfikujesz problem, ale jak go rozwiązać? Na przykład, które wersje są kompatybilne?
Sebi
1
Używam tej kombinacji: selenium-java 3.0.1 + ChromeDriver 2.27 (obsługuje Chrome v54-56)
Vitali Nikolaenko
1

Po godzinach analizowania ton logów i kodu źródłowego w końcu znaleziono problem. Rozwiązanie tego problemu jest dość łatwe.

w jednej linii: musisz przekazać --whitelisted-ips = do plików wykonywalnych sterownika chrome (nie chrome!)

Możesz to zrobić na kilka sposobów:

Jeśli używasz ChromeDriver lokalnie / bezpośrednio z kodu, po prostu wstaw poniższe wiersze przed zainicjowaniem ChromeDriver

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

Jeśli używasz go zdalnie (np. Koncentrator / siatka selenu), musisz ustawić właściwość systemu podczas uruchamiania węzła, jak w poleceniu:

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

lub docker, przekazując 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=
GetoX
źródło
0

Chromedriver to WebDriver. WebDriver to narzędzie typu open source do automatycznego testowania aplikacji internetowych w wielu przeglądarkach. Zapewnia możliwości przechodzenia do stron internetowych, wprowadzania danych przez użytkownika, wykonywania JavaScript i nie tylko. Po uruchomieniu tego sterownika umożliwi on skryptom dostęp do tego i uruchamianie poleceń w Google Chrome.

Można to zrobić za pomocą skryptów działających w sieci lokalnej ( Only local connections are allowed.) lub skryptów działających w sieciach zewnętrznych ( All remote connections are allowed.). Zawsze bezpieczniej jest używać opcji Połączenie lokalne. Domyślnie Twój Chromedriver jest dostępny przez port 9515.

Odpowiadając na pytanie, jest to tylko wiadomość informacyjna. Nie musisz się tym martwić.

Poniżej podano obie opcje.

$ 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.

Dzieje się tak przez umieszczenie wszystkich adresów IP na białej liście.

$ 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.
Keet Sugathadasa
źródło
-4

Rozwiązałem ten błąd, instalując sterownik przeglądarki:

  1. Przejdź w przeglądarce do witryny seleniumhq.org
  2. Wybierz kartę Pobrane
  3. Przewiń stronę w dół do sekcji Przeglądarka i pobierz żądany sterownik, klikając łącze, na przykład Sterownik Google Chrome
  4. Kliknij dwukrotnie pobrany plik, na przykład chromedriver_mac64 (1) .zip
  5. Kliknij dwukrotnie wyodrębniony plik, na przykład chromedriver

Odniesienie: wyszukaj błąd w serwisie YouTube.com

Platforma: macOS High Sierra 10.13.3

czerwony kogut
źródło