2012-09-09 7 views
6

Utilizzo il driver firefox di selenio 2.24 per testare l'evento di sfocatura di una casella di input. Attualmente dopo che ho inviato SendKeys a una casella di input, lascio selenio fare clic su un'altra area per attivare la sfocatura della casella di input, tuttavia penso che non sia un buon modo, qualcuno conosce un modo migliore per testarlo?Driver selenio: come testare la sfocatura?

Molte grazie.

+1

Non mi ricordo se questo ha lavorato per l'evento onblur ma prova webElement.sendKeys (Keys.RETURN); – Maciek

+2

Se si utilizza C#, è possibile inserire un carattere 'tab' alla fine della stringa da inviare all'elemento:' ele.SendKeys ("mia stringa \ t") ' –

+0

someelement.sendKeys (" \ t ") funziona anche in Java, soluzione più breve – cocorossello

risposta

4

Ho fatto una piccola indagine. Ho scoperto che l'evento antincendio non è supportato nel selenio 2.0. Vedi details. Quindi questo pezzo di codice ha lavorato per me:

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

Spero ora che questo ti aiuta)

+0

sfortunatamente l'utilizzo del metodo porterà all'eccezione: ........... \t all'indirizzo java.lang.reflect.Constructor.newInstance (Constructor.java:513) \t a org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:188) \t a org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:145) \t a org.openqa.selenium. remote.RemoteWebDriver.execute (RemoteWebDriver.java:472) \t a org.openqa.selenium.remote.RemoteWebDriver.executeScript (RemoteWebDriver.java:381) \t a org.openqa.selenium.internal.seleniumemulation.JavascriptLibrary.callEmbeddedHtmlUtils (JavascriptLibrary.java:82) – Mike

3

Il WebDriver selenio non attiva correttamente eventi come sfocatura. Tuttavia, è possibile attivarli manualmente. Supponendo che stai usando jquery:

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

questo metodo funziona anche per HtmlUnitDriver , ChromeDriver, SafariDriver e InternetExplorerDriver. – Merkidemis

0

Sostituire "elementId" con l'ID dell'elemento pertinente. Funziona bene per me. "driver" è il driver Selenium

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

1

Grazie eugene.polschikov. Ho dovuto cambiare la funzione per chiamare triggerHandler per farlo funzionare per me. Vedi quanto segue: basta sostituire "id-elemento" con l'id del tuo elemento.

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

Spero che sia d'aiuto.

1

Alcuni elementi non hanno un discriminatore adatto a scopo di test (ad esempio un ID o un altro selettore CSS a cui si desidera essere associati nei test).

Fortunatamente, la nozione di un exisits activeElement. Quindi, se la funzionalità sfocatura dell'elemento è quello che si desidera verificare, un modo javascript nativo (non legato alla jQuery o simili) per testare questo è:

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