Проверка автозаполнения с помощью веб-драйвера Selenium - PullRequest
8 голосов
/ 09 февраля 2012

У меня есть текстовое поле, в котором, когда я набираю одну букву, скажем, 's', отображается список результатов (например, поиск в Google).

Я использую последнюю версию селенового веб-драйвера с Java.

Я пробовал

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

Ничего из этого не работает, даже после добавления ожидания после каждого из шагов.

Есть предложения?

Спасибо.

Обновление: -

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

Обновление 2: -

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

Обновление 3: - Я пытался с Selenium 1, и метод fireevent работает, передав параметр как «keydown».На данный момент это временное решение.

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

Ответы [ 3 ]

3 голосов
/ 08 апреля 2014

Я нашел обходной путь по этому поводу.Моя проблема была:

  1. Селен ввел 'Mandaluyong' в поле местоположения с автоматическим предложением
  2. Поле автоматического предложения появилось вместе с соответствующим параметром
  3. Затем селеноставил раскрывающийся список автоматического предложения без выбора соответствующей опции.

То, что я сделал, было:

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

Это происходит из-за ручного теста, когда я пытаюсьнажмите клавишу TAB, система сделала две вещи:

  1. Выбирает соответствующую опцию из выпадающего списка автоматического предложения
  2. Закрывает выпадающий список автоматического предложения

Надеюсь, это поможет.

1 голос
/ 22 октября 2012

Я полагаю, что вы тестируете здесь автоматическое предложение (а не автозаполнение)

Шаги, которым я следую -

  1. Введите что-то в поле ввода
  2. Нажмитена предложение, которое вы хотите выбрать.(Вы можете найти xpath, используя некоторые инструменты, такие как Firebug с Firepath, Chrome и т. Д.)
  3. Убедитесь, что текст в поле ввода совпадает с ожидаемым.
0 голосов
/ 20 февраля 2012

Пока это временный обходной путь.

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