En el HTML de una aplicación web hay el siguiente código
<input type="text" name="prettyTime" id="prettyTime" class="ui-state-disabled prettyTime" readonly="readonly">
Lo que realmente se muestra en la página es una cadena que muestra la hora.
En Selenium Web Driver, tengo un WebElementobjeto que se refiere al <input>uso
WebElement timeStamp = waitForElement(By.id("prettyTime"));
Quiero obtener el valor de WebElemento, en otras palabras, lo que está impreso en la página. Probé todos los WebElementcaptadores y nada ha recuperado el valor real que ve el usuario. ¿Alguna ayuda? Gracias.
fuente

getAttribute("value")¿Es realmente cómo haces esto? Eso no tiene ningún sentido. Existe una gran diferencia entre elvalueatributo de uninputelemento y suvaluepropiedad. ¿Selenium hace lo horrible que hace jQuery y los combina?awaital usargetAttribute.Puedes hacer esto:
esto le dará el tiempo que se muestra en la página web.
fuente
Con selenio 2,
normalmente lo escribo así:
O
fuente
Para enlaces de Python será:
fuente
Siguiendo la respuesta de @ragzzy, uso
Funciona bastante bien y no altera el DOM
fuente
Como se mencionó antes, podrías hacer algo así
Pero como puede ver, su elemento debe tener un
idatributo, y también, jquery en su página.fuente
Si el valor de entrada se completa con un script que tiene alguna latencia involucrada (por ejemplo, una llamada AJAX), entonces debe esperar hasta que se complete la entrada. P.ej
fuente
element.GetAttribute ("valor");
Aunque si no ve el atributo "valor" en html dom, obtendrá el valor del campo que se muestra en la GUI.
fuente
Esto es una especie de truco, pero funciona.
Usé
JavascriptExecutory agreguédiva al HTML, y cambié el texto endiva$('#prettyTime').val(). Luego usé Selenium para recuperardivy tomar su valor. Después de probar la exactitud del valor, eliminé el div que se acababa de crear.fuente