2012-09-09 23 views
6

Tôi đang sử dụng trình điều khiển firefox selenium 2,24 để kiểm tra sự kiện mờ của hộp nhập liệu. Hiện nay sau khi tôi sendKeys vào một hộp đầu vào, tôi cho selenium nhấp vào một khu vực khác để kích hoạt hộp làm mờ đầu vào, tuy nhiên tôi nghĩ rằng đó không phải là một cách tốt, bất cứ ai biết một cách tốt hơn để kiểm tra điều này?Trình điều khiển Selenium: làm thế nào để kiểm tra mờ?

Rất cám ơn.

+1

Tôi không nhớ điều này có hiệu quả cho sự kiện onblur không hãy thử webElement.sendKeys (Keys.RETURN); – Maciek

+2

Nếu bạn đang sử dụng C#, thì bạn có thể chèn một 'tab' char vào cuối chuỗi để gửi đến phần tử:' ele.SendKeys ("chuỗi của tôi \ t") ' –

+0

someelement.sendKeys (" \ t ") cũng hoạt động trong Java, giải pháp ngắn nhất – cocorossello

Trả lời

4

Tôi đã thực hiện một cuộc điều tra lil. Tôi phát hiện ra rằng sự kiện cháy không được hỗ trợ trong selenium 2.0. Xem details. Vì vậy, đoạn mã này làm việc cho tôi:

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

Hope bây giờ điều này sẽ giúp bạn)

+0

không may bằng cách sử dụng phương pháp sẽ dẫn đến ngoại lệ: ........... \t tại java.lang.reflect.Constructor.newInstance (Constructor.java WEBC13) \t tại org.openqa.selenium.remote.ErrorHandler.createThrowable (ErrorHandler.java:188) \t tại org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed (ErrorHandler.java:145) \t tại org.openqa.selenium. remote.RemoteWebDriver.execute (RemoteWebDriver.java:472) \t tại org.openqa.selenium.remote.RemoteWebDriver.executeScript (RemoteWebDriver.java:381) \t tại org.openqa.selenium.internal.seleniumemulation.JavascriptLibrary.callEmbeddedHtmlUtils (JavascriptLibrary.java:82) – Mike

3

Các WebDriver selen không đúng cách gây ra các sự kiện như mờ. Tuy nhiên, bạn có thể kích hoạt chúng theo cách thủ công. Giả sử bạn đang sử dụng jquery:

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

Phương pháp này cũng làm việc cho HtmlUnitDriver , ChromeDriver, SafariDriver và InternetExplorerDriver. – Merkidemis

0

Thay thế "elementId" bằng ID phần tử có liên quan. Việc này ổn với tôi. "trình điều khiển" là trình điều khiển Selenium của bạn

Trình điều khiển JavascriptExecutor jsexec = (JavascriptExecutor); jsexec.executeScript ("document.getElementById ('" + elementId + "'). Onblur();");

1

Cảm ơn eugene.polschikov. Tôi đã phải thay đổi chức năng để gọi triggerHandler để làm cho nó hoạt động cho tôi. Xem phần sau - chỉ cần thay thế "id phần tử" bằng id của phần tử của bạn.

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

Hy vọng điều đó sẽ hữu ích.

1

Một số yếu tố không có phân biệt đối xử thích hợp cho mục đích thử nghiệm (ví dụ: id hoặc công cụ chọn CSS khác mà bạn muốn ràng buộc trong các thử nghiệm của mình).

May mắn thay, khái niệm về số activeElement hiện có. Vì vậy, nếu chức năng làm mờ của phần tử là những gì bạn muốn thử nghiệm, một cách javascript gốc (không phụ thuộc vào jQuery hoặc tương tự) để kiểm tra điều này là:

driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0"); 
Các vấn đề liên quan