Comment expliquer à l'aide du navigateur.sommeil rapporteur
Je suis un nouveau rapporteur,et je suis en train de tester, liste d'événements,
voici mon code:
describe('popover directive', function() {
var buttons= element.all(by.tagName('button'));
it('should show the popover title by clicking', function() {
var popTitle="testTitle";
var popContent="testContent";
element(by.model('title')).clear().sendKeys(popTitle);
element(by.model('content')).clear().sendKeys(popContent).then(function(){
buttons.get(0).click().then(function(){
browser.sleep(1000);
expect(element(by.className('popover-title')).getText()).toMatch(popTitle);
expect(element(by.className('popover-content')).getText()).toMatch(popContent);
});
});
buttons.get(0).click();
browser.sleep(1000);
expect(element(by.css('[class="popover fade top in"]')).isPresent()).toBe(false);
});
});
1.Si je ne suis pas d'ajouter de temps de retard de code comme browser.sleep()
, le test échoue et affiche un message:
NoSuchElementError: No element found using locator: By.className('popover-title')
Est-ce possible de ne pas ajouter de temps de retard code ...comme browser.sleep()
? Si c'est impossible, comment donner un sens à définir le temps de sommeil bien? Est qui ont un certain lien avec les animations CSS?
2.À l'aide de browser.waitForAngular()
ou click().then(function(){...})
au lieu de browser.sleep()
semble pas de travail, obtiendra le même message d'erreur.
Ce serait génial si quelqu'un peut répondre à ces questions, merci beaucoup.
Vous devez vous connecter pour publier un commentaire.
La raison que vous deviez ajouter un sommeil sans doute à cause de votre animation. De nombreuses animations utilisation
setTimeout
, qui Angulaire (donc Rapporteur) ne pas connaître et ne pas attendre. L'angle équivalent àsetTimeout
est son$timeout
service.Mais souvent vous ne pouvez pas modifier les animations de la bibliothèque de cesser d'utiliser
setTimeout
. De rapporteur, l'utilisationbrowser.wait
avec un délai d'attente (ne pas dormir).Avec le Rapporteur 1.7, vous serez en mesure d'utiliser le expectedConditions bibliothèque de sorte que vous pouvez le faire:
au lieu d'utiliser le navigateur, déclarer un rapporteur de l'instance :
Alors utiliser:
au lieu de navigateur.
browser.ignoreSynchronization = true;
ne vous permettra pas de magie supprimer instruction de mise en veille. Cette déclaration seul but est de savoir si vous travaillez avec un pas angulaire de l'app, et vous devez vous jamais avez qu'à l'ajouter angulaire apps.