es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo inicializar el controlador remoto de Chrome utilizando WebDriverManager, al pasar ChromeOptions y una URL del servidor independiente de Selenium Grid?

Intentando inicializar un Chrome Remote web driver utilizando WebDriverManager, mientras se pasan ChromeOptions y una URL del servidor Selenium Grid standalone utilizando Java.
A partir de ejemplos en línea;
Pasando las opciones de Chrome se vería así:

WebDriverManager.chromedriver().setup();
RemoteWebDriver remoteWebDriver = new ChromeDriver(options);
threadLocalDriver.set(remoteWebDriver);

Pasando la URL del hub para el servidor independiente de Selenium Grid se vería así:

WebDriverManager.chromedriver().setup();
RemoteWebDriver remoteWebDriver = ((RemoteWebDriver) WebDriverManager
                                       .chromedriver()
                                       .remoteAddress(hubURL)
                                       .create());
threadLocalDriver.set(remoteWebDriver);

¿Cómo puedo pasar ambos a un objeto RemoteWebDriver?

Gracias

EDIT:

Aquí está mi código. Estoy obteniendo un error del método create()
[main] ERROR io.github.bonigarcia.wdm.WebDriverManager - There was an error creating WebDriver object for Chrome
io.github.bonigarcia.wdm.config.WebDriverManagerException: Timeout of 30 seconds creating WebDriver object

public void createDriver() throws IOException {

    ChromeOptions options = getPlatformSpecificOptions();
    logger.info("Driver options: " + options.toString());

    String hubURL = "http://127.0.0.1:4444/wd/hub";

    WebDriver driver = WebDriverManager.chromedriver()
            .capabilities(options)
            .remoteAddress(hubURL)
            .create();           
    threadLocalDriver.set(((RemoteWebDriver) driver));

}
TestHelper.setPlatform(PLATFORM);
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para inicializar un Chrome RemoteWebDriver utilizando WebDriverManager mientras se pasan tanto ChromeOptions como una URL del servidor autónomo de Selenium Grid, puedes utilizar el siguiente código:

    ChromeOptions options = getPlatformSpecificOptions();
    String hubURL = "http://127.0.0.1:4444/wd/hub";
    RemoteWebDriver remoteWebDriver = new RemoteWebDriver(new URL(hubURL), options);
    WebDriverManager.chromedriver().setup();
    threadLocalDriver.set(remoteWebDriver);
    

    Este código primero crea una instancia de ChromeOptions con las opciones deseadas, luego almacena la URL del servidor autónomo de Selenium Grid en una variable de tipo cadena llamada hubURL. A continuación, crea una instancia de RemoteWebDriver y pasa options y hubURL a su constructor.

    Finalmente, configura el ChromeDriver con WebDriverManager y establece la instancia creada de RemoteWebDriver en la variable local del hilo llamada threadLocalDriver.

    Ten en cuenta que debes manejar la excepción MalformedURLException que puede ser lanzada por el constructor de la URL.

Comments are closed.