2012-02-08 49 views
7

Tengo un cuadro de texto en el que cuando escribo una letra diga 's', muestra una lista de resultados (como la búsqueda en Google).Prueba autocompletar con Selenium webdriver

Estoy usando la última selenium webdriver con java.

He tratado

sendKeys("s"), 

JavascriptLibrary jsLib = new JavascriptLibrary(); 

jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onkeyup"); 

    jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onblur"); 

    jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onclick"); 

    jsLib.callEmbeddedSelenium(driver, "doFireEvent", driver.findElement(By.id("assetTitle")), "onmouseup"); 


driver.findElement(By.id("assetTitle")).sendKeys(Keys.ENTER); 

Ninguno de estos trabajos, incluso después de la adición de espera después de cada uno de los pasos.

¿Alguna sugerencia?

Gracias.

Actualización: -

WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.google.com"); 
    WebElement query = driver.findElement(By.name("q")); 
    query.sendKeys("s"); 
driver.findElement(By.xpath("//table[@class='gssb_m']/tbody/tr/td/div/table/tbody/tr/td/span")).click(); 
    driver.findElement(By.name("btnG")).click(); 

Actualización 2: -

WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.kayak.com/"); 
    WebElement query = driver.findElement(By.name("destination")); 
    query.sendKeys("s"); 

Actualización 3: - he intentado con selenio 1 y el método FireEvent funciona haciendo pasar como parámetro 'keyDown'. Esto debería ser una solución temporal por ahora.

WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.kayak.com/"); 
    DefaultSelenium sel = new WebDriverBackedSelenium(driver,"http://www.kayak.com/"); 

    sel.type("//input[@id='destination']", "s"); 
    sel.fireEvent("//input[@id='destination']", "keydown"); 
+0

¿Puede actualizar su pregunta con un código de ejemplo que funcione con el campo de búsqueda de Google? – djangofan

+0

He agregado el código de búsqueda de Google de ejemplo. Aunque el último paso no es necesario, Google trae automáticamente los resultados de la búsqueda. Pero si lo intentas en kayak.com, un código similar no funcionará para buscar aeropuertos. – user1198308

+0

Se agregó una muestra de kayak. Al enviar la clave 's, deberíamos ver los aeropuertos comenzando con la letra S. – user1198308

Respuesta

0

Esto debería ser una solución temporal por ahora.

WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.kayak.com/"); 
    DefaultSelenium sel = new WebDriverBackedSelenium(driver,"http://www.kayak.com/"); 

    sel.type("//input[@id='destination']", "s"); 
    sel.fireEvent("//input[@id='destination']", "keydown"); 
1

creo que está probando sugerencia automática aquí (auto-no completa)

Pasos sigo -

  1. Introduzca algo en el campo de entrada
  2. Haga clic en la sugerencia que quiero elegir (Puede encontrar el xpath usando algunas herramientas como Firebug con Firepath, Chrome, etc.)
  3. Verifique que el texto en el campo de entrada sea el mismo que se esperaba.
2

Encontré una solución a esto. Mi problema era:

  1. selenio introducido 'Mandaluyong' a un campo de ubicación de auto-sugerir
  2. La sugerencia automática campo aparece junto con la opción emparejado
  3. A continuación, el selenio dejó el desplegable sugerencia automática abierta no seleccionando la opción coincidente.

Lo que hice fue:

 driver.findElement(By.name("fromLocation")).sendKeys("Mandaluyong"); 
     driver.findElement(By.name("fromLocation")).sendKeys(Keys.TAB); 

Esto es porque en una prueba manual, cuando trato de presionar la tecla TAB, dos cosas fueron hechas por el sistema:

  1. elige el emparejado opción de la sugerencia automática desplegable
  2. Cierra la sugerencia automática desplegable

Espero que esto ayude.

Cuestiones relacionadas