Domanda

I tester del mio progetto vogliono un ID HTML univoco su ogni elemento della pagina per facilitare i test automatici.

È difficile per me ricordare di farlo, perché non ho bisogno degli ID per lo sviluppo. Come posso assicurarmi di non dimenticare?

Pensavo che qualcosa come Checkstyle potesse dirmelo, o anche le "ispezioni" in IntelliJ - ma nessuno dei due sembra supportare questa funzionalità.

Qualche idea?

È stato utile?

Soluzione

Mi vengono in mente due idee: 1. lascia che ti diano ciò che non ce l'ha. Se il problema persiste, 2. ottenere nuovi tester. ;)

Che tipo di motore di test richiede ID su ogni elemento?

Altri suggerimenti

Come qualcuno che lavora su Test Automation come lavoro giornaliero: La richiesta di aggiungere ID univoci a elementi con cui si interagisce aggiungerà molta stabilità alla suite di test automatizzata.

L'aggiunta di un ID a ogni singolo elemento nel DOM sarebbe ovviamente un sovraccarico ridicolo.

La maggior parte dei framework ha la possibilità di utilizzare CSS o XPath o anche la corrispondenza delle immagini. Questo è un grande fallback per quando non esiste una linea di comunicazione tra sviluppatori e tester. Tuttavia, se esiste una comunicazione tra questi team, ha senso aggiungerli.

Come team di sviluppo, dovresti ottenere molto valore da questi test. Dovrebbero fornire un feedback quasi immediato dopo l'implementazione delle modifiche in un ambiente di test. Se i test sono imperfetti, il loro valore precipiterà. È nell'interesse di tutti avere i test il più affidabili possibile. I buoni ID sono preziosi in questo senso.

Proprio come una nota: i suggerimenti degli ID generatori automatici sono carichi di rischi. Questi possono facilmente dare un falso senso di sicurezza e probabilmente sono peggio di niente. Il punto è che l'ID è stabile e affidabile. Un ID generato in modo incrementale cambierà se un nuovo elemento viene aggiunto nel DOM sopra. Un ID basato su un hash del suo contenuto cambierà se c'è una piccola modifica all'etichetta ecc. Ecc ...

Anche come tester: passare mezz'ora a scrivere un xpath per identificare in modo univoco un elemento è un cattivo uso del tempo se aggiungere l'ID avrebbe richiesto uno sviluppatore in 5 minuti ..... :)

Se volessi qualcosa in javascript, potresti usare jQuery. $ (" *: not ([id]) "). css ('backgroundColor', 'yellow');

Colorerebbe qualsiasi cosa senza un ID giallo, dove si passa attraverso la sorgente con Firebug e si cercano cose che sono colorate di giallo.

$.each($(*:not([id])), function(){
    $(this)
        .css("backgroundColor", "yellow")
        .addClass("no-id");
});

L'impostazione di un ID su ogni singolo elemento di ogni singola pagina mi sembra un cattivo piano.

  1. Gli ID dovrebbero essere univoci.
  2. Questo aggiungerà un sacco di gonfiore alle tue pagine
  3. Se questi vengono generati ... Immagino che debbano essere gli stessi ogni volta per questo strumento di test?
  4. Qual è il nome di questo strumento di test? Sembra strano che gli ID siano "richiesti". su ogni elemento
  5. Supponendo che ogni pagina potrebbe contenere dati leggermente diversi ogni volta che si accede ad esso, questo sembra un incubo logistico da gestire

Il motivo per cui gli strumenti non lo supportano è che si tratta di una richiesta piuttosto strana. Ci sono stato.

Le soluzioni jQuery di cui sopra otterranno ciò che hanno chiesto, ma forse non ciò di cui (o te, come squadra) hanno bisogno. Ritornerei sicuramente dai tester (non per licenziarli!), E proverei a capire un po 'di più il requisito. È davvero ogni elemento? Guarda un paio di pagine insieme e vedi cosa manca: forse sono solo frustrati e hanno bisogno di qualche ID in più di quello che hanno.

È anche difficile credere che uno strumento di test possa indirizzare gli elementi DOM solo tramite ID; vedi se ci sono altre opzioni che funzioneranno altrettanto bene e cosa puoi aggiungere volontariamente per supportarle. (Sarà sicuramente più semplice dell'aggiunta di ID ovunque.)

Infine, se gli ID sono l'unico modo, prendi in considerazione l'assegnazione degli ID in base a qualcosa che sarà più permanente del conteggio degli elementi: una sorta di hash di innerHTML, un genitore + indice di un elemento o qualcosa del genere.

Un'altra cosa da considerare, se è necessario generare ID, è farlo dal lato server. A seconda della lingua in cui ti trovi, potrebbe essere più facile farlo lì e non uccidere le prestazioni del browser.

Buona fortuna!

L'aggiunta di ID a ogni elemento non ha alcun senso. Tuttavia, se insistono, puoi aggiungere un piccolo codice javascript che aggiunge ID al sito di test che puoi omettere nel sito di produzione.

Basandosi sull'idea di Chacha102

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

Assicurati solo che venga eseguito prima dello strumento di test!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top