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 WebElement
objeto que se refiere al <input>
uso
WebElement timeStamp = waitForElement(By.id("prettyTime"));
Quiero obtener el valor de WebElement
o, en otras palabras, lo que está impreso en la página. Probé todos los WebElement
captadores 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 elvalue
atributo de uninput
elemento y suvalue
propiedad. ¿Selenium hace lo horrible que hace jQuery y los combina?await
al 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
id
atributo, 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é
JavascriptExecutor
y agreguédiv
a al HTML, y cambié el texto endiv
a$('#prettyTime').val()
. Luego usé Selenium para recuperardiv
y tomar su valor. Después de probar la exactitud del valor, eliminé el div que se acababa de crear.fuente