HTML normaliza automáticamente los espacios en blanco dentro de los elementos, ignorando los espacios iniciales / finales y convirtiendo espacios adicionales, pestañas y nuevas líneas en un solo espacio. Cuando Selenium lee el texto de la página, intenta duplicar este comportamiento, por lo que puede ignorar todas las pestañas y nuevas líneas en su HTML y hacer afirmaciones basadas en cómo se ve el texto en el navegador cuando se procesa. Hacemos esto reemplazando todos los espacios en blanco no visibles (incluido el espacio no divisible "
") con un solo espacio. Todas las nuevas líneas visibles ( <br>
, <p>
y las <pre>
nuevas líneas formateadas) deben conservarse.
Usamos la misma lógica de normalización en el texto de las tablas de casos de prueba de HTML Selenese. Esto tiene varias ventajas. Primero, no es necesario mirar el código fuente HTML de la página para averiguar cuáles deberían ser sus afirmaciones; Los
símbolos " " son invisibles para el usuario final, por lo que no debería tener que preocuparse por ellos al escribir pruebas de Selenese. (No es necesario que coloque
marcadores " " en su caso de prueba para afirmarTexto en un campo que contenga "
".) También puede colocar nuevas líneas y espacios adicionales en sus <td>
etiquetas selenesas
; dado que usamos la misma lógica de normalización en el caso de prueba que en el texto, podemos asegurarnos de que las afirmaciones y el texto extraído coincidan exactamente.
Esto crea un pequeño problema en esas raras ocasiones en las que realmente desea / necesita insertar espacios en blanco adicionales en su caso de prueba. Por ejemplo, es posible que deba escribir texto en un campo como este: " foo
". Pero si simplemente escribes<td>foo </td>
en su caso de prueba de Selenese, reemplazaremos sus espacios adicionales con un solo espacio.
Este problema tiene una solución sencilla. Hemos definido una variable en selenese
${space}
, cuyo valor es un solo espacio. Se puede utilizar ${space}
para insertar un espacio que no es necesario cortar de forma automática, así:
<td>foo${space}${space}${space}</td>
. También hemos incluido una variable
${nbsp}
que puede utilizar para insertar un espacio que no se rompa.
Tenga en cuenta que los XPaths no normalizan los espacios en blanco como lo hacemos nosotros. Si tiene que escribir un XPath como
//div[text()="hello world"]
, pero el código HTML del enlace es realmente " hello world
", tendrá que insertar un verdadero "
" en el caso de test Selenese para conseguir que coincide, como esto:
//div[text()="hello${nbsp}world"]
.