2015-06-11 1 views
1

Я два поля ввода в форме и их источник упоминается нижеSendKeys() не работает для одного моего входа fileds

<input class="col8 last right i-f ssn" data-val="true" data-val-regex="Please enter valid SSN number" data-val-regex-pattern="^((\d{3}-\d{2}-\d{4}|X{3}-X{2}-X{4}))$" id="SSN" name="SSN" type="text" value="" /> 

<input class="col8 last right i-f" id="MiddleName" maxlength="15" name="MiddleName" onkeypress="return isAlphabetKey(event)" type="text" value="" /> 

Я пытаюсь отправить вход, используя следующую команду в веб-драйвера селеном (Firefox)

driver.findElement(By.cssSelector("input[id='SSN']")).sendKeys("55555"); 
driver.findElement(By.cssSelector("input[id='MiddleName']")).sendKeys("xyz"); 

для первого поля ошибка не появляется, когда я запускаю это под TestNG, но второе поле работает нормально я включил исходный код страницы для обоих полей ввода для удобства.

+0

Пожалуйста, перечитайте свой вопрос. Неясно, где проблема. –

+0

Исходный HTML-код, который вы не содержат ни одного элемента с id = 'Zip' – aholt

+0

Идентификатор первого поля: «SSN», NOT «Zip» – Iamsomeone

ответ

5

Возможное решение 1: Выполнить javascript-вызов sendKeys() Как вы заявили, скорее всего, это форматирование текстового поля, которое не позволяет отправлятьKeys() в поле ввода. Причина может заключаться в том, что WebDriver обрабатывает ввод ввода в поле. Я бы рекомендовал попробовать javascript для выполнения другого типа метода заполнения ввода.

WebDriver driver = new FirefoxDriver(); 

JavascriptExecutor executor = (JavascriptExecutor)driver; 

executor.executeScript("document.getElementById("SSN").value='55555';); 

Возможное решение 2: https://github.com/dsheiko/autofill

У меня нет хорошего кода, который я могу показать вам для использования автозаполнения, но сам GitHub имеет очень хорошие примеры.

Возможное решение 3: Удалить атрибут форматирования ввода тега, а затем использовать SendKeys()

((JavascriptExecutor) driver).executeScript("document.getElementsByID('SSN'[0].removeAttribute('data-val-regex-pattern');"); 
    WebElement input= driver.findElement(By.id("SSN")); 
    input.clear(); 
    input.sendKeys("55555"); 
+0

Если у вас есть доступ к исходному коду html страницы, возможно, проверьте вокруг, избавившись от этого атрибута тег только для экспериментов. Кроме того, я нашел для вас еще одно возможное решение, поэтому позвольте мне изменить свой ответ, чтобы добавить это также. –

+0

также, вы пробовали какие-либо другие действия на веб-элементе, такие как нажатие, getAttribute() и т. Д.? –

+0

У меня нет доступа для изменения html, но я попробовал getAttribute() его работу отлично. Я не знаю, в чем проблема. – Hassan

2

Если есть реализация JQuery на текстовое поле SendKey() для селена не будет работать у вас есть чтобы использовать следующий фрагмент кода.

JavascriptExecutor executor = (JavascriptExecutor)driver; 
    executor.executeScript("document.getElementById('field_id').value = 'field_val';"); 
1

Просто удалите атрибут, который форматирует входной тег. Тогда вы можете просто использовать SendKeys().

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