2012-02-08 20 views
7

Ho una casella di testo in cui quando digito una lettera pronuncia "s", visualizza un elenco di risultati (come la ricerca su google).Test completamento automatico con selettore web Selenium

Sto utilizzando l'ultimo web selector con java.

ho cercato

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

nessuno di questi lavori, anche dopo l'aggiunta di attesa dopo ciascuna delle fasi.

Qualche suggerimento?

Grazie.

Aggiornamento: -

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

Aggiornamento 2: -

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

Update 3: - ho provato con selenio 1 e il metodo funziona FireEvent passando parametro come 'keydown'. Questa dovrebbe essere una soluzione temporanea per ora.

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

È possibile aggiornare la domanda con un codice di esempio che funziona con il campo di ricerca di Google? – djangofan

+0

Ho aggiunto il codice di ricerca di esempio di Google. Anche se l'ultimo passaggio non è richiesto, Google porta automaticamente i risultati della ricerca. Ma se provi per kayak.com, un codice simile non funzionerà per la ricerca di aeroporti. – user1198308

+0

Campione di kayak aggiunto. Inviando la chiave "s", dovremmo vedere gli aeroporti che iniziano con la lettera S. – user1198308

risposta

0

questo dovrebbe essere una soluzione temporanea per ora.

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

Credo che si sta testando suggerimento automatico qui (non auto-completo)

Steps seguo -

  1. Inserire qualcosa nel campo di immissione
  2. Cliccare sul suggerimento che voglio scegliere. (Puoi trovare xpath usando alcuni strumenti come Firebug con Firepath, Chrome, ecc.)
  3. Verificare che il testo nel campo di input sia lo stesso di quanto previsto.
2

Ho trovato una soluzione a questo proposito. Il mio problema era:

  1. selenio immesso 'Mandaluyong' ad un campo posizione suggerimento automatico
  2. Il suggerimento automatico campo appare insieme con l'opzione abbinato
  3. Poi il selenio ha lasciato la discesa suggerimento automatico aperto non selezionando l'opzione abbinata.

Quello che ho fatto è stato:

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

Questo è perché in un test manuale, quando cerco di premere il tasto TAB, due cose sono state fatte da parte del sistema:

  1. sceglie il opzione corrispondente dal menu a discesa auto-suggerimento
  2. Chiude il menu a discesa auto-suggerimento

Spero che questo aiuti.

Problemi correlati