WebDriverException: error desconocido: el archivo DevToolsActivePort no existe al intentar iniciar el navegador Chrome


153

Estoy tratando de iniciar Chrome con una URL, el navegador se inicia y no hace nada después de eso.

Veo el siguiente error después de 1 minuto:

Unable to open browser with url: 'https://www.google.com' (Root cause: org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist
  (Driver info: chromedriver=2.39.562718 (9a2698cba08cf5a471a29d30c8b3e12becabb0e9),platform=Windows NT 10.0.15063 x86_64) (WARNING: The server did not provide any stacktrace information)

Mi configuracion:

  • Cromo: 66
  • ChromeBrowser: 2.39.56

PD: todo funciona bien en Firefox


1
¿Puedes actualizar la pregunta con el código que está causando este error?
GPT14

Recibí este error cuando vncserver se bloqueó y ya no tenía pantalla X
xtian

Respuestas:


71

Este mensaje de error ...

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn't exist 

... implica que ChromeDriver no pudo iniciar / generar un nuevo WebBrowser, es decir, la sesión del navegador Chrome .

Sus pruebas de código y la información de versiones de todos los binarios nos habrían dado alguna pista sobre lo que está mal.

Sin embargo, según Add --disable-dev-shm-use a las banderas de inicio predeterminadas, parece que agregar el argumento --disable-dev-shm-usageresolverá temporalmente el problema.

Si desea iniciar / abarcar una nueva sesión del navegador Chrome , puede usar la siguiente solución:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized"); // open Browser in maximized mode
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("--no-sandbox"); // Bypass OS security model
WebDriver driver = new ChromeDriver(options);
driver.get("https://google.com");

disable-dev-shm-use

Según base_switches.cc disable-dev-shm-usage parece ser válido solo en el sistema operativo Linux :

#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
// The /dev/shm partition is too small in certain VM environments, causing
// Chrome to fail or crash (see http://crbug.com/715363). Use this flag to
// work-around this issue (a temporary directory will always be used to create
// anonymous shared memory files).
const char kDisableDevShmUsage[] = "disable-dev-shm-usage";
#endif

En la discusión Agregue una opción para usar / tmp en lugar de / dev / shm David menciona:

Creo que dependería de cómo se monten / dev / shm y / tmp. Si ambos están montados como tmpfs, supongo que no habrá ninguna diferencia. si por alguna razón / tmp no se asigna como tmpfs (y creo que se asigna como tmpfs de forma predeterminada por systemd), la administración de memoria compartida de Chrome siempre asigna archivos a la memoria cuando se crean archivos compartidos anónimos, por lo que incluso en ese caso no debería mucha diferencia Supongo que podría forzar las pruebas de telemetría con la bandera habilitada y ver cómo funciona.

En cuanto a por qué no usarlo de forma predeterminada, fue rechazado por el equipo de memoria compartida, supongo que tiene sentido que esté usando / dev / shm para la memoria compartida de manera predeterminada.

En última instancia, todo esto debería moverse para usar memfd_create, pero no creo que eso suceda pronto, ya que requerirá una refactorización significativa de la administración de memoria de Chrome.


Outro

Aquí está el enlace a la historia de Sandbox .


8
Pero, ¿qué causó este error específico DevToolsActivePort file doesn't existy por qué de repente comenzó a aparecer?

3
Los elementos de "Consideración adicional": parecen ser bastante aplicables a este problema. Especialmente este tipo de situación donde no se había establecido exactamente qué causó el problema.
Pete Kelley

55
Desde la parte eliminada de la publicación de @ DebanjanB, esto puede deberse al uso de un Chromedriver que no es compatible con la versión del Chrome instalado. Esto puede suceder, por ejemplo, si se actualiza Chrome sin actualizar Chromedriver.
expz

Esto solía resolver el problema para mí, no lo hace en mi sistema actual (Ubuntu 18 + Python 3.7)
tw0000

3
En caso de que esto ayude a alguien más, simplemente agregar disable-dev-shm-usageno fue suficiente. También tuve que agregar --no-sandboxpara que funcione. Esta fue la solución completa para Selenium-java:chromeOptions.addArguments("--no-sandbox", "--disable-dev-shm-usage");
George Pantazes

52

Comencé a ver este problema el lunes 2018-06-04. Nuestras pruebas se ejecutan cada día de la semana. Parece que lo único que cambió fue la versión de google-chrome (que se había actualizado a la actual) JVM y Selenium eran versiones recientes en Linux box (Java 1.8.0_151, selenium 3.12.0, google-chrome 67.0.3396.62 y xvfb-run).
Específicamente, agregar los argumentos " --no-sandbox " y " --disable-dev-shm-use " detuvo el error. Examinaré estos problemas para encontrar más información sobre el efecto y otras preguntas sobre qué provocó la actualización de google-chrome.

ChromeOptions options = new ChromeOptions();
        ...
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-dev-shm-usage");

Quiero aclarar que este código se ejecutaba todos los días de la semana en un cuadro de Ubuntu Linux, pero el código equivalente en el escritorio de Windows funcionaba bien incluso el lunes. No he encontrado información sobre para qué sirve la funcionalidad del archivo DevToolsActivePort y eso también sería útil. PK
Pete Kelley

1
Estas opciones también detuvieron el error para mí. pd: usando una pila de Rails.
Mario Pérez

Todavía recibo [java] [1536892035.965][SEVERE]: Timed out receiving message from renderer: 60.000errores incluso con esto
Jonathan

@ Jonathan - ¡Hola! ¿Puede proporcionar más detalles, como qué sistema operativo, qué versiones de los componentes que está utilizando o cómo está invocando el proceso?
Pete Kelley

@Toby: Hola! No quise decir que la posición marcara la diferencia, solo el uso mínimo de esos parámetros. Parecía que algunos de los valores predeterminados en los que había confiado cambiaron cuando ocurrieron las actualizaciones. Cualquier otro detalle relacionado con su sistema o mensaje que proporcione podría ayudar.
Pete Kelley

35

Estábamos teniendo los mismos problemas con nuestros esclavos jenkins (máquina Linux) y probamos todas las opciones anteriores.

Lo único que ayudó es establecer el argumento

chrome_options.add_argument('--headless')

Pero cuando investigamos más, notamos que la pantalla XVFB no inició la propiedad y eso está causando este error. Después de arreglar la pantalla XVFB, resolvió el problema.


2
esto resolvió mi problema, cuando se ejecutaba usando C # (en este caso, la opción se veía así: options.AddArgument ("- headless");
ozz

XVFB fue el problema para mí
lucaswxp

23

Tuve el mismo problema en Python. Lo anterior ayudó. Esto es lo que usé en Python:

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome('/path/to/your_chrome_driver_dir/chromedriver',chrome_options=chrome_options)

Resolví mi problema con la actualización de Chrome (ya tenía la última versión de chromedrive), por lo tanto, también tuve que actualizar el navegador habitual.
axel_ande

19

Actualizar:

Puedo superar el problema y ahora puedo acceder a Chrome con la URL deseada.

Resultados de probar las soluciones proporcionadas:

Intenté todas las configuraciones como se indica arriba pero no pude resolver el problema

Explicación sobre el tema:

Según mi observación, el archivo DevToolsActivePort no existe se produce cuando Chrome no puede encontrar su referencia en la carpeta scoped_dirXXXXX.

Pasos para resolver el problema.

  1. He eliminado todos los procesos de Chrome y los procesos del controlador de Chrome.
  2. Se agregó el siguiente código para invocar el cromo

    System.setProperty("webdriver.chrome.driver","pathto\\chromedriver.exe");    
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver = new ChromeDriver(options);
    driver.get(url);
    

Utilizando los pasos anteriores pude resolver el problema.

Gracias por tus respuestas.


3
¿Sabes qué efecto tiene useAutomationExtension? Deshabilita las extensiones para la automatización (capturas de pantalla / control, etc.) ¿no? ¿No debería la llegada de DevTools hacer que este cambio no tenga ningún efecto? codereview.chromium.org/2785413002
Toby

11

Estaba enfrentando el mismo problema recientemente y después de algunas pruebas y errores también funcionó para mí.

DEBE ESTAR EN LA PARTE SUPERIOR:

options.addArguments("--no-sandbox"); //has to be the very first option

BaseSeleniumTests.java

public abstract class BaseSeleniumTests {

    private static final String CHROMEDRIVER_EXE = "chromedriver.exe";
    private static final String IEDRIVER_EXE = "IEDriverServer.exe";
    private static final String FFDRIVER_EXE = "geckodriver.exe";
    protected WebDriver driver;

    @Before
    public void setUp() {
        loadChromeDriver();
    }

    @After
    public void tearDown() {
        if (driver != null) {
            driver.close();
            driver.quit();
        }
    }

    private void loadChromeDriver() {
        ClassLoader classLoader = getClass().getClassLoader();
        String filePath = classLoader.getResource(CHROMEDRIVER_EXE).getFile();
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        ChromeDriverService service = new ChromeDriverService.Builder()
                .usingDriverExecutable(new File(filePath))
                .build();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--no-sandbox"); // Bypass OS security model, MUST BE THE VERY FIRST OPTION
        options.addArguments("--headless");
        options.setExperimentalOption("useAutomationExtension", false);
        options.addArguments("start-maximized"); // open Browser in maximized mode
        options.addArguments("disable-infobars"); // disabling infobars
        options.addArguments("--disable-extensions"); // disabling extensions
        options.addArguments("--disable-gpu"); // applicable to windows os only
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.merge(capabilities);
        this.driver = new ChromeDriver(service, options);
    }

}

GoogleSearchPageTraditionalSeleniumTests.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class GoogleSearchPageTraditionalSeleniumTests extends BaseSeleniumTests {

    @Test
    public void getSearchPage() {
        this.driver.get("https://www.google.com");
        WebElement element = this.driver.findElement(By.name("q"));
        assertNotNull(element);
    }

}

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <scope>test</scope>
        </dependency>
</dependencies>

Interesante! ¿Cómo se genera un archivo .side? ¿Es esto algo que una persona de control de calidad hace manualmente?
Nital

Utiliza el Selenium IDE para grabar una prueba. El resultado es un archivo .side. Funciona bien con el IDE, pero estoy tratando de ejecutarlo con selenium-side-runner pero me encuentro con todo tipo de problemas con chromedriver.
pabrams

tiene que ser la primera opción - pasar días para encontrar esto jaja
cuniculus

¡Gracias! Agregar "--no-sandbox" resuelve mi problema.
matabares

7

En mi caso en el siguiente entorno:

  • Windows 10
  • Pitón 3.7.5
  • Google Chrome versión 80 y ChromeDriver correspondiente en la ruta C:\Windows
  • selenio 3.141.0

Necesitaba agregar los argumentos --no-sandboxy --remote-debugging-port=9222al ChromeOptionsobjeto y ejecutar el código como usuario administrador almorzando el Powershell / cmd como administrador.

Aquí está el fragmento de código relacionado:

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--no-sandbox')
options.add_argument('--remote-debugging-port=9222')
driver = webdriver.Chrome(options=options)

1
lo mismo para mí con docker con ubuntu 18.04, py3.7, chrome (driver) 80
patroqueeet

Esto funcionó para mí sin más problemas. Acababa de empezar a encontrarme con este problema hoy, pero gracias a su respuesta, ¡se solucionó rápidamente! Mi entorno es esencialmente el mismo que el tuyo.
Ryan Harris

6

Me encontré con este problema en Ubuntu 20 con Python Selenium después de descargar primero el controlador de cromo por separado y luego usarlo, sudo apt install chromium-browseraunque eran la misma versión, esto seguía sucediendo.

Mi solución fue usar el controlador Chrome provisto que viene con el paquete de repositorio ubicado en

/snap/bin/chromium.chromedriver

driver = webdriver.Chrome(chrome_options=options, executable_path='/snap/bin/chromium.chromedriver')

4

Como se indica en esta otra respuesta :

Este mensaje de error ... implica que ChromeDriver no pudo iniciar / generar un nuevo WebBrowser, es decir, la sesión del navegador Chrome.

Entre las posibles causas, me gustaría mencionar el hecho de que, en caso de que esté ejecutando un cromo sin cabeza a través de Xvfb, es posible que necesite exportla DISPLAYvariable: en mi caso, tenía en su lugar (como se recomienda) las opciones --disable-dev-shm-usagey --no-sandbox, todo fue funciona bien, pero en una nueva instalación que ejecuta la última versión (al momento de escribir) Ubuntu 18.04, este error comenzó a ocurrir, y la única solución posible era ejecutar un export DISPLAY=":20"(habiendo iniciado Xvfb previamente con Xvfb :20&).


OMG gracias. Estaba haciendo algunos cambios en nuestro contenedor acoplable y accidentalmente omití xvfb. Nunca hubiera encontrado esto si no hubieras dejado esto aquí :-).
Ryan Shillington

3

También me enfrenté a este problema al integrarme con el servidor jenkins, fui utilizado como usuario raíz para el trabajo de jenkin, el problema se solucionó cuando cambié el usuario a otro usuario . No estoy seguro de por qué se produce este error para el usuario root.

  • Google Chrome versión 71.0
  • ChromeDriver versión 2.45
  • CentOS7 versión 1.153

El usuario no root trabajó para mí, tenía la versión correcta del controlador de Chrome para el cromo.
TicJit

2

En mi caso, sucedió cuando intenté usar mi perfil de usuario predeterminado:

...
options.addArguments("user-data-dir=D:\\MyHomeDirectory\\Google\\Chrome\\User Data");
...

Esto provocó que Chrome reutilizara los procesos que ya se estaban ejecutando en segundo plano, de tal manera que el proceso iniciado por chromedriver.exe simplemente finalizó.

Resolución: elimine todos los procesos de chrome.exe que se ejecutan en segundo plano.


Tuve un problema similar, pero en Linux: mis procesos de Chrome no salieron correctamente después de que el script se bloqueó y se reutilizaron incorrectamente. matarlos resolvió el problema
jeremycg

2

capacidades de actualización en conf.js como

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['todo-spec.js'],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ['--disable-gpu', '--no-sandbox', '--disable-extensions', '--disable-dev-shm-usage']
    }
  },

};

2

En mi caso, estaba tratando de crear un jar ejecutable en el sistema operativo Windows con el navegador Chrome y quiero ejecutar lo mismo en modo sin cabeza en unix box con CentOs en él. Y estaba apuntando mi binario a un controlador que descargué y empaqué con mi suite. Para mí, este problema continúa ocurriendo independientemente de agregar lo siguiente:

ChromeOptions options = new ChromeOptions();
options.addArguments("--headless");
options.addArguments("--no-sandbox");
System.setProperty("webdriver.chrome.args", "--disable-logging");
System.setProperty("webdriver.chrome.silentOutput", "true");
options.setBinary("/pointing/downloaded/driver/path/in/automationsuite");
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("disable-infobars"); // disabling infobars
options.addArguments("--disable-extensions"); // disabling extensions
options.addArguments("--disable-gpu"); // applicable to windows os only
options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
options.addArguments("window-size=1024,768"); // Bypass OS security model
options.addArguments("--log-level=3"); // set log level
options.addArguments("--silent");//
options.setCapability("chrome.verbose", false); //disable logging
driver = new ChromeDriver(options);

La solución que probé y trabajé para mí es descargar el Chrome y sus herramientas en la caja VM / Unix del host, instalar y apuntar el binario a esto en la suite de automatización y bingo Funciona :)

Comando de descarga:

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Instalar comando:

sudo yum install -y ./google-chrome-stable_current_*.rpm

Paquete de actualizaciones con la siguiente ruta binaria de google-chrome:

options.setBinary("/opt/google/chrome/google-chrome");

¡Y funciona!


¿Dónde agregamos este código? No veo ningún código C # en mi archivo
.side

1

Tuve el mismo problema, pero en mi caso, Chrome se instaló previamente en la carpeta temporal del usuario, luego se reinstaló en los archivos de programa. Entonces, ninguna de las soluciones proporcionadas aquí no me ayudó. Pero si proporciona la ruta a chrome.exe, todo funciona:

chromeOptions.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");

Espero que esto ayude a alguien =)


parece exactamente lo contrario de la corrección @shiuu a continuación
Toby

1

Ninguna solución funcionó para mi. Pero aquí hay una solución alternativa:

maxcounter=5
for counter in range(maxcounter):
    try:           
        driver = webdriver.Chrome(chrome_options=options,
                          service_log_path=logfile,
                          service_args=["--verbose", "--log-path=%s" % logfile])
        break
    except WebDriverException as e:
        print("RETRYING INITIALIZATION OF WEBDRIVER! Error: %s" % str(e))
        time.sleep(10)
        if counter==maxcounter-1:
            raise WebDriverException("Maximum number of selenium-firefox-webdriver-retries exceeded.")

1

Puede obtener este error simplemente por pasar argumentos malos a Chrome. Por ejemplo, si paso "headless"como argumento al C # ChromeDriver, se dispara muy bien. Si cometo un error y uso la sintaxis incorrecta "--headless", obtengo el DevToolsActivePort file doesn't existerror.


1

Me encontré con el mismo problema, estoy usando el navegador UBUNTU, PYTHON y OPERA . en mi caso el problema se originó porque tenía una versión desactualizada de operadriver.

Solución: 1. Asegúrese de instalar la última versión del navegador Opera (no use Opera Beta o Opera Developer), para eso vaya al sitio oficial de Opera y descargue desde allí la última versión opera_stable.

  1. Instale el último controlador de Opera (si ya tiene una instalación de controlador de Opera, debe eliminarla primero, use sudo rm ...)

wget https://github.com/operasoftware/operachromiumdriver/releases/download/v.80.0.3987.100/operadriver_linux64.zip

   unzip operadriver_linux64.zip
   sudo mv operadriver /usr/bin/operadriver
   sudo chown root:root /usr/bin/operadriver
   sudo chmod +x /usr/bin/operadriver

en mi caso el último fue 80.0.3987 como puedes ver

  1. Además, también instalé chromedriver (pero como lo hice antes de las pruebas, no sé si es necesario) para instalar chromedriver, siga los pasos del paso anterior: v

  2. Disfruta y gracias!

Código de selenio de muestra

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Opera()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.quit()

0

Parece que hay muchas causas posibles para este error. En nuestro caso, el error ocurrió porque teníamos las siguientes dos líneas en el código:

System.setProperty("webdriver.chrome.driver", chromeDriverPath);
chromeOptions.setBinary(chromeDriverPath);

Se resuelve eliminando la segunda línea.


parece exactamente lo contrario de la corrección @ sergiy-konoplyaniy anterior: '(
Toby

En nuestro setBinary, intentamos configurar el controlador de Chrome, lo que parece un error. La corrección de @ sergiy-konoplyaniy establece chrome.exe a través de setBinary.
shiuu

¿Dónde tienes este código? Todo lo que tengo es un archivo .side, y no tiene código C #.
pabrams

0

Me encontré con el mismo problema al ejecutar Chrome a través de Behat / Mink y Selenium en un contenedor Docker. Después de tocar un poco, llegué a lo siguiente behat.ymlque suministra los interruptores mencionados anteriormente. Tenga en cuenta que todos ellos fueron necesarios para que pueda funcionar correctamente.

default:
    extensions:
        Behat\MinkExtension:
            base_url: https://my.app/
            default_session: selenium2
            selenium2:
                browser: chrome
                capabilities:
                    extra_capabilities:
                        chromeOptions:
                            args:
                                - "headless"
                                - "no-sandbox"
                                - "disable-dev-shm-usage"

0

En mi caso, estoy en un entorno de Kubernetes donde no puedo usar el TMPDIR predeterminado porque llenará el directorio temporal con basura.

Entonces estaba usando esto para usar un tmpdir diferente:

driver = new ChromeDriver(new ChromeDriverService.Builder()
                    .withEnvironment(ImmutableMap.of("TMPDIR", customTmpPath))
                    .build(), options);

Pero ahora que he actualizado todo a lo último, esto ya no parece funcionar. Necesitaré encontrar una nueva forma de hacer esto.


0

Ocurre cuando chromedriver no puede averiguar qué puerto de depuración está utilizando Chrome.

Una posible causa es un defecto abierto con HKEY_CURRENT_USER \ Software \ Policies \ Google \ Chrome \ UserDataDir

Pero en mi último caso, fue otra causa no identificada.

Afortunadamente, configurar el número de puerto funcionó manualmente:

final String[] args = { "--remote-debugging-port=9222" };
options.addArguments(args);
WebDriver driver = new ChromeDriver(options);

2
¿Es un puerto constante? ¿O dónde puedo buscarlo?
Mike Shiyan

0

Número de puerto incorrecto en mi caso. Compruebe si el número de puerto al iniciar el servidor Selenium es el mismo que en su secuencia de comandos.


-2

Resuelvo este problema instalando yum -y install gtk3-devel gtk3-devel-docs", funciona bien

Mi trabajo env es:

Selenium Version 3.12.0
ChromeDriver Version v2.40
Chrome 68 level

Antes de:
ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Después:
ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí


10
De la opinión: no publique texto en las imágenes. EDITE su respuesta y reemplace esas imágenes con texto. Gracias
sɐunıɔ ןɐ qɐp

1
¿Esto resuelve el problema para alguien? Esto no resolvió el problema para mí
Bendram

-2

Como este es el mensaje más activo para este tipo de error, quería mencionar mi solución (después de pasar horas para solucionarlo).

En Ubuntu 18.04, usando Chrome 70 y Chromedriver 2.44, y Python3 seguí recibiendo el mismo error DevToolsActivePort, incluso cuando desactivé todas las opciones enumeradas anteriormente. El archivo de registro de chromedriver y ps mostraron que el chromedriver que configuré en chrome_options.binary_location se estaba ejecutando, pero siempre daba un error DevToolsActivePort. Cuando eliminé chrome_options.binary_location = '....' y lo agregué a la creación del controlador web, lo hice funcionar bien. webdriver.Chrome ('/ ruta a ... / chromedriver', chrome_options = chrome_options)

Gracias a todos por sus comentarios que me hacen entender y resolver el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.