gpt4 book ai didi

javascript - 页面加载之前传递的 Mocha 断言

转载 作者:行者123 更新时间:2023-12-02 14:18:49 25 4
gpt4 key购买 nike

下面的 mocha 和 webdriverio 脚本在页面加载之前传递断言。

我不明白当元素本身尚未存在时它是如何传递所有内容的。页面加载后,我可以看到该元素未被单击。这是假通行证吗?如何在代码中解决这个问题?

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();
});


});

最佳答案

您应该在 .then() 处理程序中调用 done 回调,否则它会在浏览器有机会加载页面之前调用:

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();
});
});

但是,这引入了另一个问题:如果断言失败,done 将永远不会被调用(因为异常是在它之前抛出的)。

相反,您可以使用 Mocha 内置的 Promise 支持这一事实。不要使用 done 回调,而是返回一个 Promise,Mocha 将正确处理它(以及任何异常):

it('should assert page title', function() {
browser.url('https://docs.saucelabs.com/reference/platforms-configurator/?_ga=1.5883444.608313.1428365147#/');
return browser.getTitle().then(function(title) {
title.should.equal('Platform Configurator');
});
});

关于javascript - 页面加载之前传递的 Mocha 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38834201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com