2012-09-09 20 views
6

मैं एक इनपुट बॉक्स के धुंध घटना का परीक्षण करने के लिए सेलेनियम 2.24 फ़ायरफ़ॉक्स ड्राइवर का उपयोग कर रहा हूं। वर्तमान में जब मैं इनपुट बॉक्स में भेजता हूं, तो मैंने इनपुट बॉक्स धुंध को ट्रिगर करने के लिए सेलेनियम को किसी अन्य क्षेत्र पर क्लिक करने दिया, हालांकि मुझे लगता है कि यह एक अच्छा तरीका नहीं है, किसी को इसका परीक्षण करने का बेहतर तरीका पता है?सेलेनियम ड्राइवर: ब्लर का परीक्षण कैसे करें?

बहुत धन्यवाद।

+1

अगर यह onBlur घटना के लिए काम किया मुझे याद नहीं लेकिन webElement.sendKeys (Keys.RETURN) आज़माएं; – Maciek

+2

यदि आप सी # का उपयोग कर रहे हैं, तो आप तत्व को भेजने के लिए स्ट्रिंग के अंत में एक 'टैब' char डाल सकते हैं:' ele.SendKeys ("मेरी स्ट्रिंग \ t") ' –

+0

someelement.sendKeys (" \ t ") जावा में भी काम करता है, सबसे कम समाधान – cocorossello

उत्तर

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

आशा अब यह आप में मदद करता है)

+0

दुर्भाग्य से विधि का उपयोग करने से अपवाद हो जाएगा: ........... \t java.lang.reflect.Constructor.newInstance (Constructor.java:5213) पर org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:188) org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:145) पर \t org.openqa.selenium पर \t पर \t। रिमोट। RemoteWebDriver.execute (RemoteWebDriver.java:472) \t org.openqa.selenium.remote.RemoteWebDriver.executeScript पर (RemoteWebDriver.java:381) \t org.openqa.selenium.internal.seleniumemulation.JavascriptLibrary.callEmbeddedHtmlUtils (JavascriptLibrary.java:82) पर – Mike

3

सेलेनियम WebDriver ठीक से कलंक तरह की घटनाओं को गति प्रदान नहीं करता है। हालांकि, आप उन्हें मैन्युअल रूप से ट्रिगर कर सकते हैं। यह मानते हुए कि आप jquery का उपयोग कर रहे हैं:

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

इस विधि भी HtmlUnitDriver लिए काम करता है , क्रोमड्राइवर, सफारी ड्रायवर, और InternetExplorerDriver। – Merkidemis

0

प्रासंगिक तत्व आईडी के साथ "elementId" को बदलें। यह मेरे लिए ठीक काम करता है। "ड्राइवर" आपका सेलेनियम ड्राइवर

जावास्क्रिप्ट एक्स्सेलर jsexec = (जावास्क्रिप्ट एक्स्सेलर) ड्राइवर; jsexec.executeScript ("document.getElementById ('" + elementId + "')। Onblur();");

1

धन्यवाद eugene.polschikov। मुझे यह काम करने के लिए triggerHandler पर कॉल करने के लिए फ़ंक्शन को बदलना पड़ा। निम्नलिखित देखें - बस अपने तत्व की आईडी के साथ "तत्व-आईडी" को प्रतिस्थापित करें।

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

उम्मीद है कि यह मदद करता है।

1

कुछ तत्वों के परीक्षण उद्देश्यों के लिए उपयुक्त भेदभावकर्ता नहीं है (उदा। एक आईडी या कोई अन्य सीएसएस चयनकर्ता जिसे आप अपने परीक्षणों में बाध्य करना चाहते हैं)।

सौभाग्य से, activeElement exisits की धारणा। तो, अगर तत्व का कलंक कार्यक्षमता है जो आपके परीक्षण के, एक देशी जावास्क्रिप्ट रास्ता (jQuery या समान पर निर्भर नहीं) परीक्षण करना चाहें है:

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