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

Mik*_*ike 9 selenium selenium-firefoxdriver

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

非常感谢.

Aur*_*and 6

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

firefoxWebDriver.executeScript("$('#yourID').blur()");
Run Code Online (Sandbox Code Playgroud)

或者没有 jquery:

firefoxWebDriver.executeScript("document.querySelector('#yourID').blur()");
Run Code Online (Sandbox Code Playgroud)


Ric*_*lly 6

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

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

driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0");
Run Code Online (Sandbox Code Playgroud)


eug*_*kov 5

我做了一个小小的调查。我发现 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());
Run Code Online (Sandbox Code Playgroud)

现在希望这对你有帮助)