2012-09-09 1 views
6

私は、入力ボックスのブラーイベントをテストするために、selenium 2.24 firefoxドライバを使用しています。現在のところ、私は入力ボックスにsendKeysを送信した後、セレンが入力ボックスのぼかしをトリガーするために別の領域をクリックさせていますが、これは良い方法ではないと思いますが、誰かがこれをテストする良い方法を知っていますか?セレンドライバー:どのようにぼかしをテストする?

多くのありがとうございます。

+1

これはonBlurイベントのために働いていた場合、私は覚えていないが、 try webElement.sendKeys(Keys.RETURN); – Maciek

+2

C#を使用している場合は、文字列の最後に 'tab'という文字を挿入して要素に送ることができます。' ele.SendKeys( "my string \ t") ' –

+0

someelement.sendKeys(" \ t " )また、Javaで、最短の解決策 – cocorossello

答えて

4

私はリルの調査をしました。私は、火災イベントがセレン2.0ではサポートされていないことを知りました。 detailsを参照してください。 ように、コードのこの作品は、私の仕事:適切にぼかしなどのイベントをトリガしませんwebdriverを

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

希望今、これはあなたを助けます)

+0

残念なことに、このメソッドを使用して例外をリードします: ........... \t java.lang.reflect.Constructor.newInstance(Constructor.java:513) org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)で \t org.openqa.seleniumで \tで\t。 remote.RemoteWebDriver.execute(RemoteWebDriver.java:472) org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:381) org.openqa.selenium.internal.seleniumemulation.JavascriptLibrary.callEmbeddedHtmlUtilsで\t(JavascriptLibrary.java:82) – Mike

3

セレン。ただし、手動でトリガーすることはできます。 jqueryを使用していると仮定します:

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

でこの方法はまた、HtmlUnitDriverために働きます、ChromeDriver、SafariDriver、およびInternetExplorerDriverが含まれます。 – Merkidemis

0

"elementId"を関連要素IDに置き換えます。それは私のためにうまく動作します。 "ドライバー"はあなたのセレンドライバーです

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

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

希望します。

1

一部の要素には、テスト目的で適切なディスクリミネータ(たとえば、テストでバインドしたいidや別のCSSセレクタ)がありません。

幸いにも、activeElementの概念が存在します。要素のぼかし機能があるのであれば、あなたは、これをテストする(jQueryのまたは類似の際に依存しない)ネイティブJavaScriptの方法をテストしたいどのようなことです:

driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0"); 
関連する問題