gpt4 book ai didi

selenium - 使用 Intern/Leadfoot 进行功能测试条件

转载 作者:行者123 更新时间:2023-12-01 14:40:33 26 4
gpt4 key购买 nike

我希望根据先前的断言是否成功有条件地执行一些命令/断言。

我似乎无法找到嵌套 then 调用或使用 leadfoot 的链接语法有条件地执行事物的方法。

这是我的测试(每个函数末尾的返回是由于正在编译 coffeescript):

tdd.test(tableUrl, function() {
this.timeout = 60000;
return this.remote.get(require.toUrl("tests/pages/" + tableUrl))
.setPageLoadTimeout(60000)
.setFindTimeout(20000)
.findByCssSelector('.dataTables_wrapper table.dataTable')
.then(null, function(err) {
return assert.fail('', '', 'Table should exist');
}).then(pollUntil(function() {
var table;
table = document.querySelector('.dataTables_wrapper table.dataTable');
if (table.querySelectorAll('tbody td').length > 1) {
return true;
} else {
return null;
}
}, null, 20000, 500)).then(function() {
console.log('Assertion succeeded: Table should have data');
return assert.ok(true, 'Table should have data');
}, function(err) {
return assert.fail('', '', 'Table should have data');
});
});

当表不存在时,“表应该存在”和“表应该有数据”断言都应该报告为失败。但是,只有最后一个断言失败了。当我注释掉“表应该有数据”错误回调时,“表应该存在”断言被报告为正确失败。

我想做的是

  1. 测试 table 是否存在(通过 findByCssSelector)。

    a) 如果存在,报告它存在并测试它是否有多个 td 元素。目前这是通过 pollUntil 完成的,以确保命令完成/一旦发现多个 td 就立即解决 promise ,而不是等待整个隐式等待时间。

    b) 如果不存在,则报告不存在。

如果第一个 findByCssSelector 失败,我似乎找不到执行第二个“表应该有数据”轮询的错误回调的方法,因为缺少条件,并且在测试中仅报告最后一个断言失败。

最佳答案

因此条件分支可以发生在 then 调用中,this answer 解决了如何使用 intern 进行条件分支。

我遇到的问题是,由于 pollUntil 的存在,leadfoot Command 函数的行为方式与普通 function returning a callback function that returns a promise rather than a promise directly 方法不同。

这可以通过将 pollUntil 包装在匿名函数中来规避,立即使用 call 方法调用 pollUntil 函数,传入当前 this 值是由于 then 将回调的上下文设置为 Command 对象,然后最终链接到另一个 Command。

这就是上面的代码通过 pollUntil 使用正确的条件分支变成的。

tdd.test(tableUrl, function() {
this.timeout = 60000;
return this.remote.get(require.toUrl("tests/pages/" + tableUrl))
.setPageLoadTimeout(60000)
.setFindTimeout(5000)
.findByCssSelector('.dataTables_wrapper table.dataTable')
.then((function() {
return pollUntil(function() {
var table;
table = document.querySelector('.dataTables_wrapper table.dataTable');
if (table.querySelectorAll('tbody td').length > 1) {
return true;
} else {
return null;
}
}, null, 20000, 500).call(this).then(function() {
console.log('Assertion succeeded: Table should have data');
return assert.ok(true, 'Table should have data');
}, function(err) {
return assert.fail('', '', 'Table should have data');
});
}), function(err) {
return assert.fail('', '', "Table should exist. Error: " + err.name);
});
});

关于selenium - 使用 Intern/Leadfoot 进行功能测试条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25660479/

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