¿Cómo puedo validar automáticamente que tengo una identificación HTML en cada elemento?

votos
2

Los evaluadores de mi proyecto quieren una identificación HTML única en cada elemento de página para facilitar sus pruebas automáticas.

Es difícil para mí recordar hacer esto, porque no necesito los ID para el desarrollo. ¿Cómo puedo asegurarme de que no me olvide?

Pensé que tal vez algo como Checkstyle podría decirme, o incluso las inspecciones en IntelliJ, pero ninguno de ellos parece soportar esta funcionalidad.

¿Algunas ideas?

Publicado el 05/08/2009 a las 02:22
fuente por usuario
En otros idiomas...                            


6 respuestas

votos
7

Me vienen a la mente dos ideas: 1. deja que te digan lo que no tiene. Si eso no funciona, 2. obtenga nuevos probadores. ;)

¿Qué tipo de motor de prueba requiere Id en cada elemento?

Respondida el 05/08/2009 a las 02:33
fuente por usuario

votos
4

Como alguien que trabaja en la automatización de pruebas como un día de trabajo: La solicitud para añadir identificadores únicos a los elementos que se comunicaron con que se va a añadir un montón de estabilidad a la suite de pruebas automatizadas.

Adición de una identificación para cada elemento en el DOM por supuesto sería una sobrecarga ridícula.

La mayoría de los marcos tienen la capacidad de utilizar CSS o XPath o incluso la imagen correspondiente. Esta es una gran reserva para cuando no hay una línea de comunicación entre los desarrolladores y probadores. Sin embargo, si existe una comunicación entre estos equipos - que tiene sentido para agregar éstos.

Como equipo de desarrollo - que debería estar recibiendo una gran cantidad de valor a partir de estas pruebas. Se le debe dar retroalimentación casi instantánea tras el despliegue de los cambios en un entorno de prueba. Si las pruebas son escamosa - su valor va a caer en picado. Es en interés de todos tener las pruebas lo más fiable posible. Buenas identificaciones son muy valiosos en este sentido.

Así como una nota - las sugerencias de los ID de generación de auto-están cargados de riesgos. Estos pueden dar fácilmente una falsa sensación de seguridad y son probablemente peor que ninguno en absoluto. El punto es que el ID sea estable y fiable. Un ID generado de forma incremental cambiará si se añade un nuevo elemento en el DOM anteriormente. Una identificación basada en un hash de su contenido va a cambiar si hay un pequeño cambio en la etiqueta, etc, etc ...

También como un probador - pasar media hora de escribir un XPath para identificar de manera única un elemento es un mal uso del tiempo si se añade el ID habría tomado un desarrollador 5 minutos ..... :)

Respondida el 28/07/2015 a las 11:53
fuente por usuario

votos
4

Si quiere algo en javascript, puede usar jQuery. $("*:not([id])").css('backgroundColor', 'yellow');

Colorearía cualquier cosa sin una identificación amarilla, donde simplemente iría a través de la fuente con Firebug y buscaría cosas que son de color amarillo.

$.each($(*:not([id])), function(){
    $(this)
        .css("backgroundColor", "yellow")
        .addClass("no-id");
});
Respondida el 05/08/2009 a las 02:26
fuente por usuario

votos
2

La razón por la cual las herramientas no son compatibles es porque es una solicitud bastante extraña. He estado allí.

Las soluciones jQuery anteriores les darán lo que pidieron, pero tal vez no lo que ellos (o usted, como equipo) necesitan. Definitivamente volvería a los probadores (¡no para despedirlos!), Y trataré de entender el requerimiento un poco más. ¿Es realmente cada elemento? Mire un par de páginas juntas y vea lo que falta, quizás estén frustradas y necesiten algunas más ID de las que tienen.

También es difícil creer que una herramienta de prueba solo podría abordar los elementos DOM por ID; vea si hay otras opciones que funcionen igual de bien y lo que puede ofrecer como voluntario para agregarlas a su apoyo. (Sin duda será más fácil que agregar ID en todas partes).

Finalmente, si las identificaciones son la única forma, considere asignar los identificadores basados ​​en algo que será más permanente que el conteo de elementos: algún tipo de hash del innerHTML, el índice principal de un elemento, o algo así.

Otra cosa a considerar, si necesita generar identificaciones, es hacerlo desde el lado del servidor. Dependiendo del idioma en el que se encuentre, puede ser más fácil hacerlo allí y no matará el rendimiento del navegador.

¡Buena suerte!

Respondida el 26/08/2009 a las 06:04
fuente por usuario

votos
2

Establecer un ID en cada elemento en cada página me parece un mal plan.

  1. Los ID deben ser únicos.
  2. Esto agregará mucha hinchazón a tus páginas
  3. Si estos se generan ... Supongo que deben ser siempre iguales para esta herramienta de prueba.
  4. ¿Cuál es el nombre de esta herramienta de prueba? Parece extraño que los ID sean "necesarios" en cada elemento
  5. Suponiendo que cada página puede contener datos ligeramente diferentes cada vez que accede a ella, esto parece una pesadilla logística para gestionar
Respondida el 05/08/2009 a las 02:42
fuente por usuario

votos
1

Agregar ID a cada elemento no tiene ningún sentido. Sin embargo, si insisten, puede agregar un pequeño código de JavaScript que agregue identificadores al sitio de prueba que puede omitir en el sitio de producción.

Basándose en la idea de Chacha102

$(document).ready(function() {
    var index = 1;
    $.each($(*:not([id])), function(){
        $(this).attr("id", "id1000" + index++); //or some other unique generator
    });
}

¡Solo asegúrese de que esto se ejecute antes de la herramienta de prueba!

Respondida el 05/08/2009 a las 02:40
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more