Cuando se ejecuta WebDriver con el navegador Chrome, aparece el mensaje "Solo se permiten conexiones locales" aunque el navegador se inicie correctamente

85

Cuando ejecuto el navegador Chrome usando WebDriver, recibo el siguiente mensaje en la consola. Hágame saber cómo resolverlo.

"Iniciando ChromeDriver (v2.10.267521) en el puerto 22582" "Solo se permiten conexiones locales".

Aquí está mi código de muestra:

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();
    }
}
usuario3899403
fuente

Respuestas:

96

este es solo un mensaje informativo. Lo que le dice el mensaje es que el ejecutable de chromedriver solo aceptará conexiones desde la máquina local.

La mayoría de las implementaciones de controladores (el controlador de Chrome y el controlador de IE con seguridad) crean un servidor HTTP. Los enlaces de idioma (Java, Python, Ruby, .NET, etc.) utilizan un protocolo JSON sobre HTTP para comunicarse con el controlador y automatizar el navegador. Dado que el servidor HTTP simplemente escucha en un puerto abierto las solicitudes HTTP generadas por los enlaces de idioma, las conexiones al servidor HTTP iniciadas por los enlaces de idioma solo pueden provenir de otros procesos en el mismo host. Tenga en cuenta que esta limitación no se aplica a las conexiones que el navegador puede realizar con sitios web externos; más bien evita las conexiones entrantes de otros sitios web.

JimEvans
fuente
En mi caso, la prueba se detiene después de abrir el navegador y la página está vacía. En la url Not secure data:, Entonces, en ese sentido, esto es un problema. ¿Tienes idea de por qué?
SMPH
entonces, si accedo a un sitio web que usa comunicación https con selenium usando driver.get ( etc ... ), ¿eso significa que la información enviada a ese sitio está encriptada con https?
Mike Sandstrom
La comunicación HTTP (no segura) a la que se hace referencia en esta respuesta es entre los enlaces de idioma (su código de Selenium en Java, C #, Python, etc.) y el controlador del navegador (chromedriver, geckodriver, etc.). La comunicación entre el navegador y el sitio web no se modifica. Si está utilizando HTTPS en el navegador, la comunicación entre el navegador y el servidor web aún debe estar cifrada.
JimEvans
Tengo el mismo problema: / ¿Se solucionó este problema alguna vez?
user3430861
13

Recibía exactamente los mismos errores. Hoy luché contra este problema durante unas horas. Parecía deberse a una discrepancia entre las versiones de chromedriver y selenium-server-standalone. El archivo config.js hacía referencia a un directorio que tenía chromedriver 2.9 y selenium-server-standalone 2.35.0. Una vez que me aseguré de que estábamos haciendo referencia a 2.10 y 2.42.2, funcionó.

newToSeleniumMate
fuente
13

No es necesariamente la mejor práctica, pero mi entorno era una red local con varias máquinas que necesitaban acceso al selenio.

Al ejecutar el controlador cromado, puede pasar por un parámetro como este:

chromedriver --whitelisted-ips=""

Básicamente, esto incluirá en la lista blanca todas las IP, no siempre es una solución ideal, por supuesto, y tenga cuidado con ella para entornos de producción, pero se le debe presentar una advertencia detallada:

Inicio de ChromeDriver 2.16.333244 (15fb740a49ab3660b8f8d496cfab2e4d37c7e6ca) en el puerto 9515 Se permiten todas las conexiones remotas. ¡Utilice una lista blanca en su lugar!

En el mejor de los casos, una solución alternativa, pero funciona.

Check-in relativo

Pogrindis
fuente
5

Esto me estaba pasando cuando tuve que arreglar un proyecto antiguo que no había sido revisado por un tiempo. El controlador cromado asociado al proyecto no era compatible con mi versión de Chrome, así que cuando actualicé el controlador cromado funcionó bien.

Cawmag
fuente
3

este es solo un mensaje informativo. No significa nada si sus scripts de prueba y chromedriver están en la misma máquina, entonces es posible agregar la opción "whitelisted-ips". Su prueba funcionará bien. Sin embargo, si usa chromedriver en una configuración de cuadrícula, este mensaje no aparecerá

Vicky
fuente
3
cómo agrego este hermano - "ips en lista blanca". Tengo el mismo problema
Tanvir
2
Cómo agregar las ips de la lista blanca. estoy usando windows. Gracias
garlapak
1

Tuve que ejecutar mis comandos en el mismo terminal, no por separado.

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

Muy a menudo, este error aparece si usa versiones incompatibles de Selenium y ChromeDriver.

Selenium 3.0.1 para el proyecto 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
fuente
1
Debería explicar cómo puede resolver su problema. Solo identifica el problema, pero ¿cómo solucionarlo? ¿Qué versiones son compatibles, por ejemplo?
Sebi
1
Utilizo esta combinación: selenium-java 3.0.1 + ChromeDriver 2.27 (es compatible con Chrome v54-56)
Vitali Nikolaenko
1

Después de horas de análisis leyendo toneladas de registros y código fuente, finalmente encontré un problema. Y es bastante fácil resolverlo.

en una sola línea: debe pasar --whitelisted-ips = a los ejecutables del controlador Chrome (¡no Chrome!)

Puedes hacerlo de varias formas:

Si usa ChromeDriver localmente / directamente desde el código, simplemente inserte las líneas a continuación antes de ChromeDriver init

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

Si lo usa de forma remota (por ejemplo, selenium hub / grid), debe establecer la propiedad del sistema cuando se inicia el nodo, como en el comando:

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

o docker pasando 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
fuente
0

Chromedriver es un WebDriver. WebDriver es una herramienta de código abierto para pruebas automatizadas de aplicaciones web en muchos navegadores. Proporciona capacidades para navegar a páginas web, entrada de usuarios, ejecución de JavaScript y más. Cuando ejecute este controlador, permitirá que sus scripts accedan a este y ejecuten comandos en Google Chrome.

Esto se puede hacer mediante scripts que se ejecutan en la red local ( Only local connections are allowed.) o mediante scripts que se ejecutan en redes externas ( All remote connections are allowed.). Siempre es más seguro utilizar la opción Conexión local. De forma predeterminada, se puede acceder a su Chromedriver a través del puerto 9515.

Para responder a la pregunta, es solo un mensaje informativo. No tienes que preocuparte por eso.

A continuación se muestran ambas opciones.

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

Esto es mediante la lista blanca de todas las direcciones 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.
Keet Sugathadasa
fuente
-4

Resolví este error instalando el controlador del navegador:

  1. Navegue con su navegador al sitio web seleniumhq.org
  2. Seleccione la pestaña Descargas
  3. Desplácese hacia abajo en la página hasta la sección Navegador y descargue el controlador que desee haciendo clic en el enlace, por ejemplo, Controlador de Google Chrome
  4. Haga doble clic en el archivo descargado, por ejemplo, chromedriver_mac64 (1) .zip
  5. Haga doble clic en el archivo extraído, por ejemplo, chromedriver

Referencia: busque en YouTube.com el error

Plataforma: macOS High Sierra 10.13.3

Gallo rojo
fuente