我正在使用 selenium 2.24
Firefox 驱动程序来测试输入框的模糊事件。目前,在我sendKeys
进入一个输入框后,我让 selenium 单击另一个触发输入框模糊的区域。
但是,我认为这不是一个好方法,有人知道更好的测试方法吗?
非常感谢。
我正在使用 selenium 2.24
Firefox 驱动程序来测试输入框的模糊事件。目前,在我sendKeys
进入一个输入框后,我让 selenium 单击另一个触发输入框模糊的区域。
但是,我认为这不是一个好方法,有人知道更好的测试方法吗?
非常感谢。
selenium WebDriver 无法正确触发模糊等事件。但是,您可以手动触发它们。假设您使用的是 jquery:
firefoxWebDriver.executeScript("$('#yourID').blur()");
或者没有 jquery:
firefoxWebDriver.executeScript("document.querySelector('#yourID').blur()");
某些元素没有适合测试目的的鉴别器(例如,您希望在测试中绑定的 id 或其他 CSS 选择器)。
幸运的是,存在activeElement的概念。因此,如果您希望测试元素的模糊功能,则可以使用本机 javascript 方式(不依赖于 jQuery 或类似方式)来测试它:
driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0");
我做了一个小调查。我发现 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());
希望现在这对您有所帮助)
谢谢 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());
希望能帮助到你。
将“elementId”替换为相关的元素 ID。这对我来说可以。“驱动程序”是您的 Selenium 驱动程序
JavascriptExecutor jsexec = (JavascriptExecutor) 驱动程序;jsexec.executeScript("document.getElementById('" + elementId +"').onblur();");