2013-09-24 2 views
2

Java로 Selenium Webdriver를 사용하는데 문제가 있음을 발견했습니다. 텍스트 필드에 텍스트를 보내려고하면 처음 두 문자 만 보내 게됩니다. 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)를 보냅니다! 문제가 어디 있는지 모르겠지만 누군가 나를 도울 수 있습니까?

편집 : 크롬 버전 : 29.0.1547.76 m, 셀레늄 서버 독립 2.35.0, Chromedriver 방법론 페이지

+1

Chrome/ChromeDriver/Selenium의 버전은 무엇입니까? 다른 브라우저와 다른 점은 무엇입니까? – Arran

+0

모두 괜찮아요, 내가 정확히 무엇을 보내고 싶은지 입력하면 보내 게됩니다. 그러나 변수를 보내는 것을 거부합니다. 때때로 두 문자를 모두 보냅니다. – Manderius

답변

0

자바 스크립트는이 코드

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

관련 문제