11

我正在使用 selenium 2.24Firefox 驱动程序来测试输入框的模糊事件。目前,在我sendKeys进入一个输入框后,我让 selenium 单击另一个触发输入框模糊的区域。

但是,我认为这不是一个好方法,有人知道更好的测试方法吗?

非常感谢。

4

5 回答 5

6

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

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

或者没有 jquery:

firefoxWebDriver.executeScript("document.querySelector('#yourID').blur()");
于 2012-12-14T21:19:07.300 回答
6

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

幸运的是,存在activeElement的概念。因此,如果您希望测试元素的模糊功能,则可以使用本机 javascript 方式(不依赖于 jQuery 或类似方式)来测试它:

driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0");
于 2014-12-03T17:26:32.043 回答
5

我做了一个小调查。我发现 selenium 2.0 不支持 fire 事件。查看详情。所以这段代码对我有用:

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

希望现在这对您有所帮助)

于 2012-09-09T21:38:17.957 回答
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());

希望能帮助到你。

于 2014-10-30T12:58:58.683 回答
0

将“elementId”替换为相关的元素 ID。这对我来说可以。“驱动程序”是您的 Selenium 驱动程序

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

于 2014-08-22T06:44:48.890 回答