Comment faire pour obtenir L'élément Angular 2 à travers le nom de la classe dans Jasmine

je peux obtenir de l'élément avec l'aide de la

fixture.debugElement.query(By.css('h1'));

mais ce que je devrais faire quand je veux obtenir l'élément par le nom de classe. Quelque chose comme ceci

fixture.debugElement.query(By.css('class="name"'))
14
demandé sur Paul Samsotha 2016-10-17 13:50:58

3 réponses

Vous utilisez By.css pour passer un sélecteur css. De sorte que toute sélecteur vous pouvez utiliser avec css, vous pouvez utiliser By.css. Et un sélecteur pour une classe est tout simplement .classname (par période).

By.css('.classname')          // get by class name
By.css('input[type=radio]')   // get input by type radio
By.css('.parent .child')      // get child who has a parent

ce ne sont que quelques exemples. Si vous connaissez css, alors vous devriez savoir comment utiliser les sélecteurs.

EDIT: Pour utiliser By.css() assurez-vous de import { By } from '@angular/platform-browser';

36
répondu Paul Samsotha 2018-05-23 22:44:44

je préférerais l'identifiant d'utilisateur sur votre élément DOM et ensuite dans l'unité angular2 vous tester peut appeler quelque chose comme ci-dessous pour obtenir la référence de votre élément DOM désiré et de tester ce que jamais vous le souhaitez.

//typscript syntax

fixture = TestBed.createComponent(<your component>);

let result = fixture.nativeElement.querySelector('<id attribute name of html element>');

expect(result.id).toEqual("id  of your DOM element.").

Espérons que cette aide.

4
répondu MikBTC 2017-06-30 06:51:57

Juste pour ajouter quelques autres utile des moyens pour la sélection d'éléments:

// get element with multiple classes

fixture.debugElement.query(By.css('.className1.className2'));


// get a certain element from a group of elements with the same class name

fixture.debugElement.queryAll(By.css('.className'))[1];
1
répondu Duarte 2018-08-23 13:55:43