2013-09-24 4 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! Я не знаю, где проблема, может кто-нибудь мне помочь?

EDIT: версия Chrome: 29.0.1547.76 м, Селен Сервер Standalone 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

Смежные вопросы