2012-09-09 20 views
6

Używam sterownika firefox selen 2.24 do testowania zderzenia w polu wejściowym. Obecnie po i sendKeys do pola wprowadzania, pozwalam selenowi kliknij inny obszar, aby wywołać rozmycie pola wprowadzania, jednak myślę, że to nie jest dobry sposób, każdy zna lepszy sposób na przetestowanie tego?Sterownik Selenium: jak przetestować rozmycie?

Wielkie dzięki.

+1

nie pamiętam czy to działało na razie onblur ale spróbuj webElement.sendKeys (Keys.RETURN); – Maciek

+2

Jeśli używasz C#, a następnie można wstawić 'tab' char na końcu łańcucha wysłać do elementu:' ele.SendKeys („mój ciąg \ t”) ' –

+0

someelement.sendKeys („\ t”) działa również w języku Java, najkrótsze rozwiązanie – cocorossello

Odpowiedz

4

Zrobiłem lil dochodzenie. Okazało się, że zdarzenie pożaru nie jest obsługiwane w selen 2.0. Zobacz details. Więc ten kawałek kodu pracował dla mnie:

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

Nadzieja teraz to pomaga)

+0

Niestety przy użyciu metody doprowadzi do wyjątku: ........... \t na java.lang.reflect.Constructor.newInstance (Constructor.java:513) \t w org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:188) \t w org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:145) \t w org.openqa.selenium. remote.RemoteWebDriver.execute (RemoteWebDriver.java:472) \t w org.openqa.selenium.remote.RemoteWebDriver.executeScript (RemoteWebDriver.java:381) \t na org.openqa.selenium.internal.seleniumemulation.JavascriptLibrary.callEmbeddedHtmlUtils (JavascriptLibrary.java:82) – Mike

3

Selen WebDriver nie poprawnie wywołać wydarzeń, takich jak rozmycie. Możesz jednak ręcznie je wyzwolić. Zakładając, że używasz jquery:

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

Ta metoda działa również dla HtmlUnitDriver , ChromeDriver, SafariDriver i InternetExplorerDriver. – Merkidemis

0

Zamień "elementId" na odpowiedni identyfikator elementu. Działa to dobrze dla mnie. "sterownik" to sterownik Selenium

Sterownik JavascriptExecutor jsexec = (JavascriptExecutor); jsexec.executeScript ("document.getElementById ('" + elementId + "'). Onblur();");

1

Dzięki eugene.polschikov. Musiałem zmienić funkcję, aby zadzwonić pod numer triggerHandler, aby zadziałało. Zobacz poniższe - po prostu zastąp "id elementu" identyfikatorem twojego elementu.

JavascriptExecutor jsexec = (JavascriptExecutor) driver; 
StringBuilder stringBuilder = new StringBuilder(); 
stringBuilder.append("var x = $('" + element-id + "');"); 
stringBuilder.append("x.triggerHandler('blur');"); 
jsexec.executeScript(stringBuilder.toString()); 

Mam nadzieję, że to pomaga.

1

Niektóre elementy nie mają odpowiedniego dyskryminatora dla celów testowych (na przykład identyfikator lub inny selektor CSS, który chcesz wiązać się w badaniach).

szczęście, pojęcie an activeElement exisits. Tak więc, jeśli funkcjonalność rozmycie elementu jest to, co chcesz przetestować, natywny sposób Javascript (nie uzależnionej od jQuery lub podobne), aby przetestować to:

driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0"); 
Powiązane problemy