J'essaie d'exécuter des scénarios de test pour effectuer la réinitialisation du mot de passe et je suis confronté à ce problème.
WebDriverException Element doit être modifiable par l'utilisateur pour le supprimer.
En gros, j'accède à la page pour entrer le nouveau mot de passe et le faire:
browser.$("#newPassword").text("password");
où l'exécution de la ligne ci-dessus renvoie l'erreur.
J'ai eu le même problème et c'était parce qu'il y avait un autre élément avec le même identifiant qui n'était pas un champ de saisie, il ne pouvait donc pas être effacé.
Il peut s'agir d'utiliser la mauvaise méthode pour le type d'entrée.
Dans CodeCeption au moins, fillField
devrait être utilisé sur les éléments d'entrée et selectOption
devrait être utilisé sur certains éléments et leur mélange conférerait invalid element state: Element must be user-editable in order to clear it.
Nous pouvons essayer ce qui suit:
WebElement.sendKeys(Keys.DELETE);
WebElement.sendKeys("Test");
J'ai eu ce problème avec un élément autoComplete de Primefaces. Primefaces 6.0 génère une étendue avec l'ID que vous transmettez et une entrée avec un "_input" ajouté à l'ID. Si vous utilisez simplement l'ID que vous avez ajouté dans votre code source, vous indiquez à Selenium d'entrer dans la plage (ce qui échoue avec l'erreur "l'élément doit être éditable par l'utilisateur"). Ajoutez le "_input" à l'ID si vous sélectionnez par ID dans Selenium.