web-dev-qa-db-fra.com

sendkeys ne fonctionnent pas dans Selenium Webdriver

Je ne parviens pas à attribuer une valeur à mon application à l'aide du pilote Web . Mon application utilise des cadres.

Je peux effacer la valeur de ma zone de texte avec driver.findElement(By.name("name")).clear();, mais je ne peux pas mettre de valeur avec driver.findElement(By.name("name")).sendKeys("manish");. La commande click fonctionne pour un autre bouton de la même page.

23
user3162976

J'ai également eu ce problème aussi bien avant. Mais ce que j’ai fait pour que cela fonctionne est

myInputElm.click();
myInputElm.clear();
myInputElm.sendKeys('myString');
27
andyssundaypink

Essayez de cliquer sur la zone de texte avant d’envoyer les clés.

Il se peut que vous deviez déclencher un événement sur le terrain avant de le saisir et espérons que le clic le fera

3
Robbie Wareham

Utilisez javascript pour cliquer sur dans le champ et puis utilisez sendkeys () pour saisir des valeurs. J'ai eu un problème similaire dans le passé avec des cadres. Javascript est le meilleur moyen. 

1
OPY

J'ai rencontré le même problème et j'ai pu collecter la solution suivante:

  1. Assurez-vous que l'élément est actif -> essayez de cliquer dessus puis entrez une chaîne .
  2. S'il y a une animation pour cette zone de saisie, appliquez un peu wait not static, vous pouvez attendre un élément après l'animation .(My case)
  3. Vous pouvez l'essayer en utilisant la classe Actions.
0
Abhinav Saxena

Je suis allé avec le même problème où copier coller ne fonctionne pas aussi pour cette zone de texte . Le code ci-dessous fonctionne très bien pour moi-

WebDriver driver = new FirefoxDriver();
String mobNo = "99xxxxxxxx";
WebElement mobileElementIrs = 
driver.findElement(By.id("mobileNoPrimary"));
mobileElementIrs.click();
mobileElementIrs.clear();
mobileElementIrs.sendKeys(mobNo);
0
IRSHAD

Première passer le contrôle du pilote à frame en utilisant ----

  driver.switchTo().frame("pass id/name/index/webelement");

Après cela, effectuez l’opération que vous souhaitez effectuer sur le Webelement présent dans frame--

 driver.findElement(By.name("name")).sendKeys("manish");
0
SATYA

J'ai eu le même problème. D'abord, j'ai supposé et essayé en tant que @andyssundaypink dit. Mais ça n'a pas aidé. Donc, quand j'ai ajouté sleep pendant 1 seconde avant de cliquer sur l'élément, le problème a été résolu.

Thread.sleep(2000);
element = driver.findElement(...);
element.click();
element.clear();
element.sendKeys('abc');
Thread.sleep(1000);
0
Belenot

Essayez d’utiliser Javascript pour sendkeys ().

WebElement element = driver.findElement(By.name("name"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

Vous trouverez plus d'informations sur l'exécutant Javascript @ JavascriptExecutor - Selenium

0
Russell Bradley

J'ai eu un problème similaire aussi, quand j'ai utilisé 

getDriver().findElement(By.id(idValue)).clear();
getDriver().findElement(By.id(idValue)).sendKeys(text);

La valeur dans "texte" n'était pas complètement écrite dans l'entrée, imaginons que "Patrick" écrive parfois "P" un autre "Pat", ... donc le test a échoué 

Ce que j'ai fait pour résoudre ce problème est une solution de contournement et j'utilise Javascript

((JavascriptExecutor)getDriver()).executeScript("$('#"+idValue+"').val('"+value+"');");

Maintenant c'est bien

Au lieu de 

driver.findElement(By.id("idValue")).sendKeys("text");

utilisation,

((JavascriptExecutor)getDriver()).executeScript("$('#"+"idValue"+"').val('"+"text"+"');");

Cela a fonctionné pour moi.

0
cralfaro

Avant sendkeys (), utilisez la méthode click () [i.e dans votre cas: clear (), cliquez sur (), 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");
0
sathish p

En cliquant sur l'élément me convient aussi, cependant, une autre solution que j'ai trouvée consistait à entrer la valeur à l'aide de JavaScript, ce qui n'exige pas que l'élément ait le focus:

var _element= driver.FindElement(By.Id("e123"));
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].setAttribute('value', 'textBoxValue')", _element);
0
Dexter1759