Saltar al contenido

Cómo hacer clic en un elemento en Selenium WebDriver usando JavaScript

Posterior a de nuestra extensa recopilación de información pudimos solucionar este atasco que pueden tener ciertos los usuarios. Te ofrecemos la respuesta y deseamos que te resulte de mucha ayuda.

Solución:

Ejecutar un clic a través de JavaScript tiene algunos comportamientos que debe tener en cuenta. Si, por ejemplo, el código vinculado a la onclick evento de su elemento invoca window.alert(), es posible que su código de Selenium se cuelgue, dependiendo de la implementación del controlador del navegador. Dicho esto, puedes usar el JavascriptExecutor clase para hacer esto. Sin embargo, mi solución difiere de otras propuestas en que aún puede usar los métodos de WebDriver para ubicar los elementos.

// Assume driver is a valid WebDriver instance that
// has been properly instantiated elsewhere.
WebElement element = driver.findElement(By.id("gbqfd"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

También debe tener en cuenta que es mejor que utilice el click() metodo de la WebElement interfaz, pero deshabilitando los eventos nativos antes de crear una instancia de su controlador. Esto lograría el mismo objetivo (con las mismas limitaciones potenciales), pero no lo obligaría a escribir y mantener su propio JavaScript.

Aquí está el código que usa JavaScript para hacer clic en el botón en WebDriver:

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('gbqfb').click();");

Sé que esto no es JavaScript, pero también puede usar físicamente el clic del mouse para hacer clic en un ancla dinámica de Javascript:

public static void mouseClickByLocator( String cssLocator ) 
     String locator = cssLocator;
     WebElement el = driver.findElement( By.cssSelector( locator ) );
     Actions builder = new Actions(driver);
     builder.moveToElement( el ).click( el );
     builder.perform();

valoraciones y comentarios

Te invitamos a añadir valor a nuestro contenido contribuyendo tu experiencia en las críticas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *