2013-09-24 63 views
2

我使用Selenium Webdriver和Java,並且發現了一個問題。當我嘗試向文本字段發送一些文本時,它只發送兩個第一個字符。我試着用JavaScriptExecutor設置它,但同樣的事情發生了。 ChromeDriver正在運行並正常工作。下面的代碼:Selenium Webdriver - sendKeys()不發送所有密鑰 - Java

public void sendNumberToChrome (int number){ 
     textfield.clear(); // textfield is already set, it's classic input field with max. 10 characters 
     System.out.println(String.valueOf(number)); // This prints for example 94 
     textfield.sendKeys(String.valueOf(number)); // But only "9" appears in the browser 
    } 

我也試圖通過字符發送字符:

String[] arr = String.valueOf(number).split("(?<!^)"); // splits number character by character 
for (String s : arr){ 
    System.out.println(s); // Prints 9 and then 4 
    textfield.sendKeys(s); // Also only 9 appears 
    Thread.sleep(100); // Maybe browser can not work too fast, so I will wait before sending next character 
} 

JavascriptExecutor也只發送一個字符,每隔幾分鐘崩潰(不知道爲什麼),所以我不使用它。 但是,什麼是有趣的 - 當我這樣做:

textfield.sendKeys(String.valueOf(94)); 

它發送94到Chrome瀏覽器!我不知道問題出在哪裏,有人可以幫我嗎?

編輯:Chrome版本:29.0.1547.76男,Selenium服務器獨立2.35.0,Chromedriver V2.3

+1

什麼版本的Chrome/ChromeDriver/Selenium?與其他瀏覽器有什麼不同? – Arran

+0

一切都很好,當我輸入我想要發送的內容時,它會發送它。但它拒絕發送變量,雖然有時它發送兩個字符... – Manderius

回答

0

的Javascript在網頁上與您輸入

搞亂試試這個代碼

static boolean sendKeyIntoElement(WebElement webElement, String value){ 
    webElement.click(); 
    webElement.sendKeys(value); 

    while(!webElement.getAttribute("value").equals(value)){ 
     webElement.click(); 
     webElement.sendKeys(Keys.CONTROL + "a"); 
     webElement.sendKeys(Keys.DELETE); 
     try { 
      Thread.sleep(500); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
    return webElement.getAttribute("value").equals(value); 
} 
+0

4年後回覆? 4年?你是怎麼設法找到這個的? – Manderius

相關問題