Estoy tratando de usar Selenium WebDriver para ingresar texto en un elemento de entrada GWT que tiene texto predeterminado, "Ingresar ID de usuario". Aquí hay algunas maneras en que he tratado de hacer que esto funcione:¿Cómo puedo eliminar consistentemente el texto predeterminado de un elemento de entrada con Selenium?
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);
Lo extraño es que esto solo funciona algunas veces. A veces, termina buscando "Ingresar IDus de usuario", básicamente comenzando a escribir "nombre de usuario" después del texto predeterminado, y sin siquiera terminar eso.
¿Alguna otra forma mejor y más confiable de eliminar el texto predeterminado de un elemento GWT?
Editado para agregar: El HTML del elemento de entrada. Desafortunadamente, no hay mucho que ver, gracias al calor de JS/GWT. Aquí está el campo cuando es no seleccionados:
<input type="text" class="gwt-TextBox empty" maxlength="40">
Después de haber hecho clic y dado que enfocar manualmente, el texto predeterminado y la clase "vacío" se eliminan.
El JS a setDefaultText()
se llama tanto onBlur()
como onChange()
si el cambio da como resultado un campo de texto vacío. Supongo que es por eso que el searchField.clear()
no está ayudando.
También he pasado por este método en modo de depuración, y en ese caso, nunca funciona. Cuando se ejecuta normalmente, funciona la mayor parte del tiempo. No puedo decir por qué, sin embargo.
Se puede publicar una copia del código HTML del control, y hay alguna javascript que interactúa con el control? – Arran
¿El texto predeterminado en la 'entrada' proviene de un atributo HTML5 'placeholder', o existe algún tipo de JavaScript' onfocus' y 'onblur'? –