Le rapporteur clear() ne fonctionne pas
J'ai deux tests:
it('should filter the phone list as user types into the search box', function() {
var results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(3);
});
var queryInput = ptor.findElement(protractor.By.input('query'));
queryInput.sendKeys('nexus');
results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(1);
});
queryInput.clear();
queryInput.sendKeys('motorola');
results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(2);
});
});
it('should display the current filter value within an element with id "status"',
function() {
//expect(element('#status').text()).toMatch(/Current filter: \s*$/);
var queryInput = ptor.findElement(protractor.By.input('query'));
queryInput.clear();
expect(ptor.findElement(protractor.By.id('status')).getText()).toMatch('Current Filter:');
//input('query').enter('nexus');
//queryInput.clear();
//queryInput.sendKeys('nexus');
//expect(element('#status').text()).toMatch(/Current filter: nexus\s*$/);
//expect(ptor.findElement(protractor.By.id('status')).getText()).toMatch('^\Current Filter:.');
//alternative version of the last assertion that tests just the value of the binding
//using('#status').expect(binding('query')).toBe('nexus');
});
le premier test, la zone de recherche, fonctionne très bien.
le deuxième test, du statut, de ne pas passer parce que la dernière valeur saisie dans queryInput est reporté à la deuxième test, et la queryInput.clear() ne fonctionne pas.
Cependant, dans le deuxième essai, si je fais un appel queryInput.sendKeys("quelque chose"), "quelque chose" s'affiche.
Si je sors de l'clear() dans le deuxième essai, je vais voir "motorolasomething".
Ainsi, s'il semble clair() fonctionne, mon test ne passe pas si j'ai juste clear() dans le deuxième essai, quand je lance le deuxième essai, je vais voir "motorola", même quand clear() est appelée avant le deuxième test.
Je me demandais pourquoi le clear() n'est pas de compensation dans le deuxième test, quand je n'ai pas un sendKeys ().
OriginalL'auteur bmw0128 | 2013-11-13
Vous devez vous connecter pour publier un commentaire.
De la Documentation claire() dit ce qui suit:
afin de se dégager de faire ce que vous voulez, vous avez à travailler avec la promesse qu'il retourne! pour ce faire, vous devez utiliser
then()
voici comment cela fonctionne:
donc
clear()
vous renvoie une promesse pour effacer l'entrée etthen()
raconte la promesse que faire dès que l'entrée est désactivée.Non tu ne peut pas la chaîne. Ce n'est pas résoudre la promesse de claire. Vous devez utiliser
.then()
OriginalL'auteur Michael K.
Vous pouvez combiner la promesse tenue dans une chaîne:
queryInput.clear().sendKeys('nexus');
then()
méthode. Mais je upvoted ce parce qu'il fonctionne bien parce que ce sont simplement chaînée des méthodes sur le même objet.OriginalL'auteur Dmytro Tolkachov