Simple rapporteur de test pour isElementPresent faute non pris en charge localisateur de stratégie
Mon test:
it('should allow login', function() {
browser.get('index.html');
$('#username').sendKeys('administrator');
$('#password').sendKeys('password');
$('#login').click();
var logout = $('#logout');
expect($p.isElementPresent(logout)).to.eventually.be.true;
});
Mais cette erreur avec:
Error: Unsupported locator strategy: click
at Error (<anonymous>)
at Function.webdriver.Locator.createFromObj (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/locators.js:97:9)
at Function.webdriver.Locator.checkLocator (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/locators.js:111:33)
at webdriver.WebDriver.findElements (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:805:31)
at webdriver.WebDriver.isElementPresent (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:787:29)
at Protractor.isElementPresent (/usr/local/lib/node_modules/protractor/lib/protractor.js:476:22)
at /Users/pschuegr/wt/client/e2e/login_test.js:26:15
Étrangement, il souligne l'isElementPresent ligne, plutôt que la ligne avec le clic. Je suis assez nouveau à webdriver, alors, toutes mes excuses si j'ai oublié quelque chose d'évident. Je suis en cours d'exécution à l'aide de la moka cadre (ce qui signifie que le canari version de rapporteur), fwiw.
Toutes les idées apprécié.
- Qu'est-ce que $p et où est-il en venir?
- $p est le rapporteur de l'instance (ie mandat proposé concernant l'éie)
- maintenant
$p
etptor
ont été remplacés parbrowser
Vous devez vous connecter pour publier un commentaire.
$('#logout')
est un WebElement.isElementPresent
prend un localisateur, comme par.cssÀ l'aide de la dernière Rapporteur construire, vous pouvez raccourcir la réponse ci-dessus à la suivante:
De cette façon, vous n'avez pas à effectuer le navigateur.attendre et vous réduisez le nombre d'appels à isElementPresent.
browser.wait
appel inutile, je suppose qu'il y a eu un changement au sein de rapporteur, qui a rendu cela possible sans l'explicite attendre? Si oui, qu'est-ce que le changement?L'approche la plus sûre, je prendrais est représenté dans l'extrait de code suivant:
Code ci-dessus commence avec une promesse de vérifier si un élément existe, et si vrai, alors affecter
true
, sinon attendre et de garder la mise en commun pour la prochaine 15sec pour voir si un élément est présent, et dans les deux cas, nous nous attendons à ce qu'il soit vrai.Cela devrait fonctionner :