Wenn Sie WebDriver mit dem Chrome-Browser ausführen, wird die Meldung "Nur lokale Verbindungen sind zulässig" angezeigt, obwohl der Browser ordnungsgemäß gestartet wird

82

Wenn ich den Chrome-Browser mit WebDriver ausführe, wird auf der Konsole die folgende Meldung angezeigt. Bitte lassen Sie mich wissen, wie ich es lösen kann.

"Starten von ChromeDriver (v2.10.267521) über Port 22582" "Nur lokale Verbindungen sind zulässig."

Hier ist mein Beispielcode:

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
quelle

Antworten:

94

Dies ist nur eine Informationsnachricht. Die Meldung besagt, dass die ausführbare Datei von chromedriver nur Verbindungen vom lokalen Computer akzeptiert.

Die meisten Treiberimplementierungen (der Chrome-Treiber und der IE-Treiber sicher) erstellen einen HTTP-Server. Die Sprachbindungen (Java, Python, Ruby, .NET usw.) verwenden alle ein JSON-over-HTTP-Protokoll, um mit dem Treiber zu kommunizieren und den Browser zu automatisieren. Da der HTTP-Server lediglich einen offenen Port auf HTTP-Anforderungen überwacht, die von den Sprachbindungen generiert werden, dürfen Verbindungen zum HTTP-Server, die von den Sprachbindungen gestartet werden, nur von anderen Prozessen auf demselben Host stammen. Beachten Sie sorgfältig, dass diese Einschränkung nicht für Verbindungen gilt, die der Browser zu externen Websites herstellen kann. Vielmehr werden eingehende Verbindungen von anderen Websites einfach verhindert .

JimEvans
quelle
In meinem Fall stoppt der Test nach dem Öffnen des Browsers und die Seite ist leer. In der URL Not secure data:, In diesem Sinne ist dies ein Problem. Hast du eine Idee warum?
SMPH
Wenn ich also über driver.get ( etc ... ) auf eine Website zugreife, die https-Kommunikation mit Selen verwendet , bedeutet dies, dass die an diese Site gesendeten Informationen mit https verschlüsselt sind?
Mike Sandstrom
Die in dieser Antwort erwähnte HTTP-Kommunikation (nicht gesichert) erfolgt zwischen den Sprachbindungen (Sie Selenium-Code in Java, C #, Python usw.) und dem Browsertreiber (Chromedriver, Geckodriver usw.). Die Kommunikation zwischen Browser und Website bleibt unverändert. Wenn Sie HTTPS im Browser verwenden, sollte die Kommunikation zwischen dem Browser und dem Webserver weiterhin verschlüsselt sein.
JimEvans
13

Ich habe genau die gleichen Fehler bekommen. Ich habe heute ein paar Stunden gegen dieses Problem gekämpft. Es schien durch eine Nichtübereinstimmung zwischen den Versionen von Chromedriver und Selenium-Server-Standalone verursacht zu werden. Die Datei config.js verweist auf ein Verzeichnis mit chromedriver 2.9 und selenium-server-standalone 2.35.0. Nachdem ich sichergestellt hatte, dass wir auf 2.10 und 2.42.2 verweisen, funktionierte es.

newToSeleniumMate
quelle
12

Nicht unbedingt die beste Vorgehensweise, aber meine Umgebung war ein lokales Netzwerk mit mehreren Maschinen, die Zugriff auf das Selen benötigten.

Wenn Sie den Chromedriver ausführen, können Sie einen Parameter wie folgt durchlaufen:

chromedriver --whitelisted-ips=""

Dies wird im Grunde alle IPs auf die Whitelist setzen, was natürlich nicht immer eine ideale Lösung ist, und Sie sollten damit vorsichtig sein, wenn es um die Produktion geht. Sie sollten jedoch eine ausführliche Warnung erhalten:

Starten von ChromeDriver 2.16.333244 (15fb740a49ab3660b8f8d496cfab2e4d37c7e6ca) an Port 9515 Alle Remoteverbindungen sind zulässig. Verwenden Sie stattdessen eine Whitelist!

Bestenfalls eine Umgehung, aber es funktioniert.

Relativer Check-in

Pogrindis
quelle
5

Dies passierte mir, als ich ein altes Projekt reparieren musste, das seit einiger Zeit nicht mehr angeschaut worden war. Der dem Projekt zugeordnete Chromedriver war nicht mit meiner Chrome-Version kompatibel. Als ich den Chromedriver aktualisierte, funktionierte er einwandfrei.

Cawmag
quelle
3

Dies ist nur eine Informationsnachricht. Es bedeutet nichts, wenn sich Ihre Testskripte und Ihr Chromedriver auf demselben Computer befinden. Dann können Sie die Option "Whitelisted-IP" hinzufügen. Ihr Test wird einwandfrei ausgeführt. Wenn Sie jedoch Chromedriver in einem Grid-Setup verwenden, wird diese Meldung nicht angezeigt

Vicky
quelle
3
Wie füge ich diesen Bruder hinzu - "whitelisted-ips". Ich habe das gleiche Problem
Tanvir
2
So fügen Sie die Whitelist-IPs hinzu. Ich benutze Windows. Danke
garlapak
1

Ich musste meine Befehle im selben Terminal ausführen , nicht separat.

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
quelle
1

Sehr oft tritt dieser Fehler auf, wenn Sie inkompatible Versionen von Selenium und ChromeDriver verwenden.

Selen 3.0.1 für das Maven-Projekt:

    <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
quelle
1
Sie sollten erklären, wie er sein Problem lösen kann. Sie identifizieren nur das Problem, aber wie können Sie es lösen? Welche Versionen sind zum Beispiel kompatibel?
Sebi
1
Ich benutze diese Kombination: Selen-Java 3.0.1 + ChromeDriver 2.27 (Es unterstützt Chrome v54-56)
Vitali Nikolaenko
0

Chromedriver ist ein WebDriver. WebDriver ist ein Open-Source-Tool zum automatisierten Testen von Webanwendungen in vielen Browsern. Es bietet Funktionen zum Navigieren zu Webseiten, Benutzereingaben, zur Ausführung von JavaScript und mehr. Wenn Sie diesen Treiber ausführen, können Ihre Skripts darauf zugreifen und Befehle in Google Chrome ausführen.

Dies kann über Skripte erfolgen, die im lokalen Netzwerk ausgeführt werden ( Only local connections are allowed.) oder über Skripte, die in externen Netzwerken ausgeführt werden ( All remote connections are allowed.). Es ist immer sicherer, die Option Lokale Verbindung zu verwenden. Standardmäßig ist Ihr Chromedriver über den Port erreichbar 9515.

Um die Frage zu beantworten, handelt es sich nur um eine Informationsnachricht. Sie müssen sich keine Sorgen machen.

Im Folgenden sind beide Optionen angegeben.

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

Dies erfolgt durch Whitelist aller IPs.

$ 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
quelle
0

Nach stundenlanger Analyse beim Lesen von Tonnen von Protokollen und Quellcode wurde schließlich ein Problem festgestellt. Und es ist ziemlich einfach, es zu lösen.

in einer einzigen Zeile: Sie müssen --whitelisted-ips = an ausführbare Dateien des Chrome-Treibers (nicht Chrome!) übergeben

Sie können dies auf verschiedene Arten tun:

Wenn Sie ChromeDriver lokal / direkt aus Code verwenden, fügen Sie einfach die folgenden Zeilen vor ChromeDriver init ein

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

Wenn Sie es remote verwenden (z. B. Selenium Hub / Grid), müssen Sie beim Starten des Knotens die Systemeigenschaft festlegen, wie im Befehl:

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

oder Docker durch Passieren von 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
quelle
-4

Ich habe diesen Fehler durch die Installation des Browsertreibers behoben:

  1. Navigieren Sie mit Ihrem Browser zur Website seleniumhq.org
  2. Wählen Sie die Registerkarte Downloads
  3. Scrollen Sie auf der Seite zum Browser-Bereich und laden Sie den gewünschten Treiber herunter, indem Sie auf den Link klicken, z. B. Google Chrome-Treiber
  4. Doppelklicken Sie auf die heruntergeladene Datei, z. B. chromedriver_mac64 (1) .zip
  5. Doppelklicken Sie auf die extrahierte Datei, z. B. chromedriver

Referenz: Durchsuche YouTube.com nach dem Fehler

Plattform: macOS High Sierra 10.13.3

roten Hahn
quelle