Comment puis-je enlever systématiquement le texte par défaut à partir d'un élément d'entrée avec du Sélénium?
Je suis en train d'utiliser Selenium WebDriver pour saisir du texte à une GWT élément de saisie par défaut du texte, "Entrer ID Utilisateur". Voici quelques solutions que j'ai essayé d'obtenir que cela fonctionne:
searchField.click();
if(!searchField.getAttribute("value").isEmpty()) {
//clear field, if not already empty
searchField.clear();
}
if(!searchField.getAttribute("value").isEmpty()) {
//if it still didn't clear, click away and click back
externalLinksHeader.click();
searchField.click();
}
searchField.sendKeys(username);
La chose étrange est que le ci-dessus, cela ne fonctionne que de temps en temps. Parfois, il finit de la recherche pour "Entrée Utilisateur Udi", en gros début de type "nom d'utilisateur" après le texte par défaut -- et même pas de finition.
De meilleur, de plus en plus de moyens fiables pour effacer du texte par défaut à partir d'un GWT élément?
Modifiées afin d'ajouter: Le code HTML de l'élément d'entrée. Malheureusement, il n'y a pas grand chose à voir, grâce à la JS/GWT hotness. Voici le terrain, quand elle est décochée:
<input type="text" class="gwt-TextBox empty" maxlength="40">
Après que j'ai cliqué et de lui donner manuellement la mise au point, le texte par défaut et le "vide" de la classe sont supprimés.
Le JS pour setDefaultText()
est appelé à la fois onBlur()
et onChange()
si le changement entraîne dans un champ de texte vide. Suppose que c'est pourquoi le searchField.clear()
n'aide pas.
J'ai également renforcé grâce à cette méthode, en mode debug, et dans ce cas, il ne fonctionne jamais. Lorsqu'il est exécuté normalement, il fonctionne la plupart du temps. Je ne peux pas dire pourquoi, mais.
- Vous pouvez poster une copie du code HTML de contrôle, et quel est le javascript qui interagit avec le contrôle?
- Le texte par défaut dans la
input
venir à partir d'unplaceholder
HTML5, l'attribut, ou est-il une sorte deonfocus
etonblur
JavaScript?
Vous devez vous connecter pour publier un commentaire.
Ok, le script évidemment des coups de pied dans quand la
clear()
méthode efface leinput
et le laisse vide. Les solutions qu'il est venu avec sont donnés ci-dessous.La naïveté, presses retour arrière 10 fois:
(
StringUtils.répéter()
de Apache Commons Lang ou Google Goyave estChaînes.répéter()
peut venir dans maniable)Le plus beau de l'un à l'aide de Ctrl+Un, Supprimer:
De supprimer le contenu de la
input
via JavaScript:Réglage de la valeur de la
input
via JavaScript en tout:Noter que le javascript ne peut pas toujours travailler, comme illustré ici: Pourquoi je ne peux pas effacer un champ de saisie avec le javascript?
Pour ce qu'il vaut, je suis très semblable question. WebDriver 2.28.0 et FireFox 18.0.1
Je suis également en utilisant GWT, mais peut le reproduire avec du simple HTML/JS:
Ce test échoue la plupart du temps:
Il pourrait être simplement l'OS prendre concentrer loin de la navigateur de façon à ce WebDriver ne pouvez pas contrôler. Nous ne semblons pas à obtenir ce problème sur le serveur CI, peut-être que c'est le cas.
Je ne peux pas ajouter un commentaire, de sorte que je suis en train de monter comme une réponse ici. Je tiens à vous informer que si vous souhaitez utiliser javascript pour effacer et/ou modifier un champ de saisie de texte, puis le javascript approche donnée par @slanec ne fonctionnera pas. Voici un exemple: Pourquoi je ne peux pas effacer un champ de saisie avec le javascript?