Selenium driver:как проверить размытие?

Я использую драйвер selenium 2.24 firefox для тестирования события размытия поля ввода. В настоящее время после отправки ключей в поле ввода я позволяю selenium щелкнуть другую область, чтобы вызвать размытие поля ввода, однако я думаю, что это не лучший способ, кто-нибудь знает лучший способ проверить это?

большое спасибо.

5 ответов


Я сделал немного исследования. Я узнал, что событие fire не поддерживается в selenium 2.0. См.подробности. Так что этот фрагмент кода сработал для меня:

 driver.get("http://www.onliner.by/");

        String cssSelctr= "div.b-top-search-box input[id=\"g-search-input\"]";
        WebElement testElement=driver.findElement(By.cssSelector(cssSelctr));
        testElement.sendKeys("fvsdfs");

        JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelctr+"\');");
        stringBuilder.append("x.blur();");
        js.executeScript(stringBuilder.toString());

надеюсь, теперь это помогает)


selenium WebDriver неправильно запускает события, такие как размытие. Однако вы можете запустить их вручную. Предполагая, что вы используете jQuery:

firefoxWebDriver.executeScript("$('#yourID').blur()");

некоторые элементы не имеют подходящего дискриминатора для целей тестирования (например, идентификатор или другой селектор CSS, к которому вы хотели бы привязаться в своих тестах).

к счастью, понятие activeElement exisits. Итак, если функциональность размытия элемента - это то, что вы хотите проверить, собственный способ javascript (не зависящий от jQuery или аналогичного), чтобы проверить это:

driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0");

Спасибо Евгений.Польщиков. Мне пришлось изменить функцию, чтобы вызвать triggerHandler чтобы заставить его работать для меня. См. следующее - Просто замените "element-id" на id вашего элемента.

JavascriptExecutor jsexec = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $('" + element-id + "');");
stringBuilder.append("x.triggerHandler('blur');");
jsexec.executeScript(stringBuilder.toString());

надеюсь, что это помогает.


заменить "elementId"на соответствующий идентификатор элемента. Мне это подходит. "драйвер" драйвер селен

JavascriptExecutor jsexec = (JavascriptExecutor) драйвер; jsexec.executeScript("документ.getElementById ('"+elementId+").onblur();");