2012-02-08 3 views
7

J'ai une zone de texte dans laquelle lorsque je tape une lettre, j'indique une liste de résultats (comme google search). J'utilise le dernier pilote Web de sélénium avec Java.Test auto-complétion avec Selenium webdriver

J'ai essayé

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); 

Aucune de ces travaux, même après l'ajout d'attente après chacune des étapes.

Des suggestions?

Merci.

Update: -

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(); 

Update 2: -

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

Update 3: - I essayé avec Selenium 1 et le procédé de FireEvent fonctionne en tant que passage de paramètres 'keydown. Cela devrait être une solution temporaire pour l'instant.

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

Pouvez-vous mettre à jour votre question avec un exemple de code qui fonctionne avec le champ de recherche Google? – djangofan

+0

J'ai ajouté l'exemple de code de recherche google. Bien que la dernière étape ne soit pas nécessaire car Google apporte automatiquement les résultats de la recherche. Mais si vous essayez pour kayak.com, un code similaire ne fonctionnera pas pour la recherche d'aéroports. – user1198308

+0

Échantillon de kayak ajouté. En envoyant les clés, nous devrions voir les aéroports commençant par la lettre S. – user1198308

Répondre

0

Cela devrait être une solution de contournement temporaire pour l'instant.

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

Je crois que vous testez auto-suggèrent ici (pas auto-complétion)

Étapes Je suis -

  1. Entrez quelque chose dans le champ de saisie
  2. Cliquez sur la suggestion que vous vouloir choisir. (Vous pouvez trouver le xpath en utilisant des outils tels que Firebug avec Firepath, Chrome, etc.)
  3. Vérifiez que le texte dans le champ de saisie est le même que prévu.
2

J'ai trouvé une solution de contournement à ce sujet. Mon problème était:

  1. Sélénium entrée « Mandaluyong » à un champ de localisation automatique suggère
  2. Le champ fonction de suggestion automatique apparaît en même temps que l'option assortie
  3. Puis le sélénium gauche le menu déroulant auto-suggérer ouverte ne sélectionne pas l'option correspondante.

Ce que je ne faisais que:

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

En effet, lors d'un test manuel, lorsque je tente d'appuyer sur la touche TAB, deux choses ont été faites par le système:

  1. Médiator la option correspondante dans la liste déroulante des suggestions automatiques
  2. Ferme la liste déroulante de suggestion automatique

Espérons que cela aide.