Я хочу заполнить поле ввода на веб-сайте селена webdriver.поле ввода выглядит так:
<input type="text" pattern="[0-9,.]*" class="checkThousandSeparator hideNumberSpin" name="metal" tabindex="1" id="metal" value="0" onblur="updateVariables();" onkeyup="checkRessourceByType('metal'); updateVariables();" onkeypress="return submitOnEnter(event);">
Так что у меня никогда не было проблем с заполнением поля ввода раньше.но этот автоматически форматирует ввод, поэтому, если вы введете 24424, он автоматически сделает 24,424 из него.
Если я сейчас использую Webdriver для ввода значения, я могу ввести его (например, 4200) иполе ввода составляет 4.200 из него.но когда я отправляю форму, которая принадлежит полю ввода, она меняет значение на 0. Сумасшедшая вещь, если я ввожу значение ниже 1000, а поле ввода не нужно его форматировать, я могу предоставить правильное число.Кто-нибудь знает, почему?
что я уже пробовал:
- сделать сон
- сделать медленный ввод с sendKeys (так что только 1 символ, а затем 300 миллисекунд ожидания)
Но оба не помогли.вот мой код -
//doesn't work, form will submit a "0"
int met = 4200;
driver.findElement(By.id("metal")).sendKeys(Integer.toString(met));
//works, form submits the right value
int met = 200;
driver.findElement(By.id("metal")).sendKeys(Integer.toString(met));
Нет ошибок или чего-либо еще
Редактировать : Я забыл сказать: форма не может предоставить правильное значение, только еслиЯ ввожу значение с помощью селена Webdriver.если я ввожу значение вручную, форма всегда отправляет правильное значение, даже если оно> 1000.
Edit2 Solution : Ok.Вместо использования метода sendKeys () необходимо установить значение через JavaScriptExecuter.
//This works:
int met = 550000;
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('metal').setAttribute('value', '"+met+"')");