Selenium 带实习生/领足的功能测试条件
我希望根据之前的断言是否成功,有条件地执行一些命令/断言 我似乎找不到一种方法来嵌套Selenium 带实习生/领足的功能测试条件,selenium,intern,Selenium,Intern,我希望根据之前的断言是否成功,有条件地执行一些命令/断言 我似乎找不到一种方法来嵌套,然后调用,或者使用leadfoot的链接语法有条件地执行一些事情 这是我的测试(每个函数末尾的返回是由于编译了这个coffeescript): 当表不存在时,“表应该存在”和“表应该有数据”断言都应报告为失败。然而,只有最后一个断言失败了。当我注释掉“Table should have data”错误回调时,“Table should exist”断言被报告为错误 我想做的是 测试是否存在表(通过findByC
,然后调用,或者使用leadfoot的链接语法有条件地执行一些事情
这是我的测试(每个函数末尾的返回是由于编译了这个coffeescript):
当表不存在时,“表应该存在”和“表应该有数据”断言都应报告为失败。然而,只有最后一个断言失败了。当我注释掉“Table should have data”错误回调时,“Table should exist”断言被报告为错误
我想做的是
测试是否存在表
(通过findByCssSelector)
a) 如果它存在,报告它存在并测试它是否有多个td
元素。目前可通过pollUntil
执行此操作,以确保在找到多个td
时,命令完成/承诺得到解决,而不是等待整个隐式等待时间
b) 如果它不存在,则报告它不存在
如果第一个findByCssSelector
由于缺少条件而失败,并且只有最后一个断言失败在测试中报告,我似乎找不到一种方法来执行第二个“Table should have data”轮询的错误回调。因此条件分支可以在然后调用中发生,介绍如何使用intern进行条件分支
我遇到的问题是,由于存在错误,函数的行为方式与正常方法不同
可以通过将polltuntil
包装在匿名函数中,使用call
方法立即调用polltuntil
函数,将当前This
值(由于将回调上下文设置为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);
});
});
是否可以使用registerSuite而不是tdd?
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);
});
});