Das folgende Skript mocha und webdriadio übergibt Assertionen, bevor die Seite geladen wird.Mocha-Assertionen, die vor dem Laden der Seite übergeben wurden
Ich verstehe nicht, wie es alles passiert, wenn wahrscheinlich die Elemente selbst noch nicht vorhanden sind. Nach dem Laden der Seite konnte ich sehen, dass das Element nicht angeklickt wurde. Ist das ein gefälschter Pass? Wie behebe ich das im Code?
var webdriverio = require('webdriverio');
var should = require('chai').should()
var expect = require('chai').expect()
var options = {
desiredCapabilities: {
browserName: 'chrome'
}
};
before(function() {
browser=webdriverio.remote(options)
return browser.init()
});
describe('sauce labs page test', function() {
it('should assert page title', function(done) {
browser.url('https://docs.saucelabs.com/reference/platforms-configurator/?_ga=1.5883444.608313.1428365147#/');
browser.getTitle().then(function(title){
title.should.equal('Platform Configurator');
});
done();
});
it('should assert sub heading', function(done) {
browser.getText('h3').then(function(text) {
text.should.equal('API');
console.log(text);
});
done();
});
it('should click on selenium', function(done) {
browser.click('#main-content > div > ng-view > div > div:nth-child(1) > div.choice-buttons.choice-api > div:nth-child(2)')
done();
});
});
Ihnen danken. Das hat funktioniert. Ich werde Versprechungen verwenden, aber zu meinem Verständnis weiß doest 'done()', dass es warten muss, bis ein Element erscheint, auf dem 'browser.getTitle()' aufgerufen werden kann und schließlich 'title.should.equal ('Platform Configurator') 'kann aufgerufen werden, damit alles zusammenpasst. So viel von versteckten Teil, dass es schwer zu verstehen ist – user1207289
Der Code, den Sie testen, ist asynchron, so wie mit jedem Async-Code müssen Sie warten, bis die asynchrone Aktion abgeschlossen ist, bevor Sie fortfahren können (durch Aufruf von 'done', die signalisiert Mocha, dass der Test durchgeführt wurde). Bei Versprechungen ist die asynchrone Aktion abgeschlossen, wenn der 'then/onFullfilled'-Callback aufgerufen wird (oder, falls Sie einen haben, der 'catch/onRejected'-Callback). – robertklep