Tengo el siguiente código HTML:

<button class="gbqfba" name="btnK" aria-label="Google Search" id="gbqfba"><span id="gbqfsa">Google Search</span></button>

Mi siguiente código para hacer clic en «Buscar con Google» botón está funcionando bien el uso de java en WebDriver:

driver.findElement(By.id("gbqfb")).click();

Quiero usar jQuery con WebDriver haga clic en el botón. ¿Cómo puedo hacerlo?

Hice lo siguiente (Prueba se ejecuta en eclipse mediante el uso de TestNG marco):

WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("$('#gbqfba').click();");

Lamentablemente el error siguiente se muestra:

org.openqa.el selenio.WebDriverException: $ no está definido (ADVERTENCIA: El servidor no proporcionar cualquier stacktrace información)
Comando de duración o el tiempo de espera: 23 milisegundos

Lo que está mal con mi código anterior?

3 Comentarios

  1. 1

    WebDriver no al parecer el uso de jQuery extensión, de modo que ‘$’ no está en el espacio de nombre. Usted podría cargar el record de jQuery.js en una cadena, entonces eval como parte de su examen, que añadiría: «$ ‘ a la página del espacio de nombres…

    • ¿Cómo puedo utilizar exterior de archivo js en WebDriver? Puede usted dar por favor un ejemplo de la configuración de .archivo js?
    • Lo que quiero hacer es obtener la jQuery.js archivo en una cadena. Muchas formas de hacer html5rocks.com/en/tutorials/file/dndfiles una vez que usted puede hacer esto de jse.executeScript(«eval(jqueryscript);$(‘#gbqfq’).haga clic en();»); tengo que admitir que este es un hack, y que sería lento si tienes que hacer muchos de estos ya que eval es lento anq incluso record de jQuery es grande
    • Gracias por tu respuesta. He entendido el ejemplo, pero todavía estoy en una vaga acerca de jqueryscript parámetro en eval. Lo que será escrito en jqueryscript?
    • Como «google.com» no hace uso de jQuery, el código mencionado en mi post fallado. Puede ser resuelto por la carga de los contenidos del código jQuery en una Cadena de caracteres desde un archivo JavaScript (jquery.js, jquery.min.js o similar)
  2. 1

    El siguiente código funciona muy bien:

    WebDriver driver = new FirefoxDriver();
    JavascriptExecutor jse = (JavascriptExecutor)driver;
    URL jqueryUrl = Resources.getResource("jquery-1.8.2.min.js");
    String jqueryText = Resources.toString(jqueryUrl, Charsets.UTF_8);
    jse.executeScript(jqueryText);
    jse.executeScript("$('#gbqfba').click();");
    • Esto no es realmente una buena idea. Usted se está inyectando una bastante importante poco de código en el sitio web son pruebas de que es posible que no juega muy bien con el código que ya está ahí. Hay un montón de librerías JS que entran en conflicto con jQuery y jQuery incluso a conflictos con sí mismo si usted tiene diferentes versiones. Si jQuery no está disponible en el sitio web usted está de pruebas de no la uso! Para ser claros al hacer esto usted es probablemente lo que invalida la prueba.
    • Gracias por tu sugerencia. ¿Cuál es la mejor manera? el uso de JS? Es aconsejable el uso de JQuery en Selenio de pruebas automatizadas?
    • Usando jQuery está bien si la biblioteca ya está disponible, la inyección de un montón de nuevas bibliotecas (jQuery o no) en el sitio web que está tratando de probar, podría tener consecuencias de largo alcance. La pregunta es por qué eres la inyección de JavaScript para disparar un evento de clic de todos modos, que es una especie de ¿por qué usted tiene un WebElement.haga clic en() en función de Selenio.
    • Sí, estoy de acuerdo con usted. He utilizado sólo para el aprendizaje de JS o jQuery en WebDriver. Hay haga clic en (), el método a utilizar muy bien.
  3. 0

    Esto también podría ser resuelto mediante la Lista de clases

    Lista w = controlador.findElements(
    Por.cssSelector(«botón.gbqfba»));

        for(WebElement s1: w)
        {
            String s2= s1.getText();
            System.out.println(s2);
    
            if(s2.contentEquals("Google Search"))
            {
                s1.click();   
                break;
            }
        }

Dejar respuesta

Please enter your comment!
Please enter your name here