Ответ 1
У меня также была и эта проблема. Но тогда я сделал, чтобы это работало.
myInputElm.click();
myInputElm.clear();
myInputElm.sendKeys('myString');
Я не могу поместить какое-либо значение в мое приложение с помощью веб-драйвера. Мое приложение использует фреймы.
Я могу очистить значение моего текстового driver.findElement(By.name("name")).clear();
с помощью driver.findElement(By.name("name")).clear();
, но я не могу поставить какое-либо значение с помощью driver.findElement(By.name("name")).sendKeys("manish");
, Команда click
работает для другой кнопки на той же странице.
У меня также была и эта проблема. Но тогда я сделал, чтобы это работало.
myInputElm.click();
myInputElm.clear();
myInputElm.sendKeys('myString');
Попробуйте щелкнуть текстовое поле перед отправкой ключей.
Возможно, вам нужно инициировать событие в поле перед вводом и, надеюсь, щелчок сделает его
Используйте javascript, чтобы щелкнуть в поле и , затем используйте sendkeys(), чтобы ввести значения. У меня была аналогичная проблема в прошлом с кадрами. Javascript - лучший способ.
Попробуйте использовать Javascript для отправки ключей().
WebElement element = driver.findElement(By.name("name"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Более подробную информацию о Javascript Executor можно найти @ JavascriptExecutor - Selenium
Управление драйвером первого шага в фрейме с использованием ----
driver.switchTo().frame("pass id/name/index/webelement");
После этого выполните операцию, которую вы хотите сделать на webelement, находящемся внутри фрейма -
driver.findElement(By.name("name")).sendKeys("manish");
Я столкнулся с той же проблемой, когда копирование также не работает для этого текстового поля. Ниже код работает отлично для меня -
WebDriver driver = new FirefoxDriver();
String mobNo = "99xxxxxxxx";
WebElement mobileElementIrs =
driver.findElement(By.id("mobileNoPrimary"));
mobileElementIrs.click();
mobileElementIrs.clear();
mobileElementIrs.sendKeys(mobNo);
Нажатие на элемент работает и для меня, однако другое решение, которое я нашел, это ввести значение с помощью JavaScript, который не требует, чтобы элемент имел фокус:
var _element= driver.FindElement(By.Id("e123"));
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].setAttribute('value', 'textBoxValue')", _element);
У меня тоже была аналогичная проблема, когда я использовал
getDriver().findElement(By.id(idValue)).clear();
getDriver().findElement(By.id(idValue)).sendKeys(text);
Значение в "тексте" не было полностью записано во вход, представьте, что "Patrick
" несколько раз записывал "P" еще один "Пэт",... поэтому тест не удался
Что я сделал, чтобы исправить это было обходным путем, и использовать Javascript
((JavascriptExecutor)getDriver()).executeScript("$('#"+idValue+"').val('"+value+"');");
Теперь отлично
Вместо
driver.findElement(By.id("idValue")).sendKeys("text");
использование
((JavascriptExecutor)getDriver()).executeScript("$('#"+"idValue"+"').val('"+"text"+"');");
Это сработало для меня.
Я столкнулся с той же проблемой и смог найти для этого следующее решение:
Перед sendkeys() используйте метод click() [т.е. в вашем случае: clear(), click(), sendKeys()]
driver.findElement(By.name("name")).clear();
driver.findElement(By.name("name")).click(); // Keep this click statement even if you are using click before clear.
driver.findElement(By.name("name")).sendKeys("manish");
У меня была такая же проблема. Сначала я предположил и попробовал, как сказал @andyssundaypink. Но это не помогло. Поэтому, когда я добавил sleep
на 1 секунду, прежде чем щелкнуть элемент, проблема решилась
Thread.sleep(2000);
element = driver.findElement(...);
element.click();
element.clear();
element.sendKeys('abc');
Thread.sleep(1000);
Обычно я сохраняю временную переменную. Это должно работать.
var name = element(by.id('name'));
name.clear();
name.sendKeys('anything');
Надеюсь, что это поможет.