2012-02-08 8 views
7

Mam pole tekstowe, w którym po wpisaniu jednej litery powiedz "s", wyświetlana jest lista wyników (np. Wyszukiwarka google).Autouzupełnianie testu za pomocą Selenium webdriver

Używam najnowszej wersji webbooka selenu z Javą.

Próbowałem

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

żadna z tych prac, nawet po dodaniu czekać po każdym z etapów.

Wszelkie sugestie?

Dzięki.

Aktualizacja: -

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

Aktualizacja 2: -

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

Aktualizacja 3: - Próbowałem z Selen 1 i sposobie fireevent działa przekazując parametr jako 'keyDown'. To powinno być tymczasowe obejście na teraz.

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

Czy możesz zaktualizować pytanie za pomocą przykładowego kodu, który działa z polem wyszukiwania Google? – djangofan

+0

Dodałem przykładowy kod wyszukiwania google. Chociaż ostatni krok nie jest wymagany, ponieważ Google automatycznie wyświetla wyniki wyszukiwania. Ale jeśli spróbujesz na kayak.com, ten sam kod nie zadziała w wyszukiwaniu portów lotniczych. – user1198308

+0

Dodano próbkę kajaka. Wysyłając klucz "s", powinniśmy zobaczyć lotniska zaczynające się na literę S. – user1198308

Odpowiedz

0

To powinno być tymczasowe obejście na teraz.

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

wierzę testujesz auto-sugestia tutaj (nie auto-complete)

Kroki śledzę -

  1. Wpisz coś w polu wejściowym
  2. Kliknij na sugestię chcesz wybrać. (Możesz znaleźć ścieżkę xpath za pomocą narzędzi takich jak Firebug z Firepath, Chrome itp.)
  3. Sprawdź, czy tekst w polu wejściowym jest taki sam, jak oczekiwano.
2

Znalazłem obejście tego problemu. Moim problemem było:

  1. Selen wprowadzane „Mandaluyong” na polu auto-sugestia lokalizacji
  2. Auto-sugestia, pole pojawia się wraz z dopasowaną opcję
  3. Następnie selen opuścił auto-sugestia rozwijaną otwarte nie wybierając dopasowanej opcji.

Co zrobiłem było:

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

To dlatego na ręcznym teście, gdy próbuję nacisnąć klawisz TAB, dwie rzeczy zostały wykonane przez system:

  1. wybiera dopasowana opcja z menu rozwijanego z automatyczną propozycją
  2. Zamyka listę autodopasowania

Mam nadzieję, że to pomoże.