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.
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');
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
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.
J'ai rencontré le même problème et j'ai pu collecter la solution suivante:
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);
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");
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);
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
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.
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");
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);