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