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

问题描述 投票:9回答:5

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

但是,我认为这不是一个好方法,任何人都知道一种更好的方法来进行测试?

非常感谢。

selenium firefox selenium-firefoxdriver firefox-driver
5个回答
4
投票

我进行了小规模的调查。我发现硒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());

希望现在可以帮助您)


4
投票

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

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

或者没有jquery:

firefoxWebDriver.executeScript("document.querySelector('#yourID').blur()");

3
投票

某些元素没有用于测试目的的适当区分符(例如,您希望在测试中绑定的ID或其他CSS选择器)。

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

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

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

希望有帮助。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.