Selenium驱动程序:如何测试模糊?

时间:2012-09-09 06:33:02

标签: selenium selenium-firefoxdriver

我正在使用selenium 2.24 firefox驱动程序来测试输入框的模糊事件。目前在我将Keys发送到输入框后,我让selenium点击另一个区域来触发输入框模糊,但是我觉得这不是一个好方法,有人知道更好的方法来测试它吗?

非常感谢。

5 个答案:

答案 0 :(得分:4)

我做了一个小调查。我发现selenium 2.0不支持火灾事件。见details。 所以这段代码对我有用:

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

希望现在这可以帮助你)

答案 1 :(得分:3)

selenium WebDriver无法正确触发模糊等事件。但是,您可以手动触发它们。假设你正在使用jquery:

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

答案 2 :(得分:3)

某些元素没有合适的鉴别器用于测试目的(例如,您希望在测试中绑定的id或其他CSS选择器)。

幸运的是,activeElement存在的概念。因此,如果元素的模糊功能是您想要测试的,那么测试它的本机javascript方式(不依赖于jQuery或类似方法)是:

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

答案 3 :(得分:1)

感谢eugene.polschikov。我不得不更改函数来调用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());

希望它有所帮助。

答案 4 :(得分:0)

将“elementId”替换为相关的元素ID。这对我来说可以。 “司机”是你的Selenium司机

  

JavascriptExecutor jsexec =(JavascriptExecutor)驱动程序;   jsexec.executeScript(“document.getElementById('”+ elementId +“')。onblur();”);