所以我在JQuery中有大约10行代码块。这些线都是独立的,当我执行它们时(我只是在控制台中键入它们,它是一个自动测试)我需要它们彼此延迟,比如2秒的差异。我开始在每一行使用JavaScript setTimeout(),但是对于10行独立的代码,我假设有一种更性感的方式...而JQuery DELAY也不起作用,因为它们不是效果。有任何想法吗?这是我的代码块的一般概念..
$("#tag1").trigger("click");
$('#tag2').val("some text");
$("#tag3").trigger("keyup");
$('#tag4 select option[value="4"]').prop('selected',true);
$("#tag5").val(6);
$('#tag6').val(3).change();
$('#tag7').val(30).change();
$('#tag8').val("2017-06-29");
$('#tag9').val("2015-06-29");
$('#tag10').val("This is the test tasks' description.");
$(".id1").trigger("click");
$(".id2").val("buy oranges");
正如您所看到的,所有标签和ID都是独一无二的...... 任何想法将不胜感激!
答案 0 :(得分:0)
从我的评论:一系列匿名函数将是一个选项。递归传递给一个使用setTimeout
的函数每次切掉第一个..
e.g。像这样的东西(测试只是将函数打印到控制台,因为缺少DOM元素):
JSFiddle: http://jsfiddle.net/bnq6tppb/1/
var operations = [
function () {
$("#tag1").trigger("click");
},
function () {
$('#tag2').val("some text");
},
function () {
$("#tag3").trigger("keyup");
},
function () {
$('#tag4 select option[value="4"]').prop('selected', true);
},
function () {
$("#tag5").val(6);
},
function () {
$('#tag6').val(3).change();
},
function () {
$('#tag7').val(30).change();
},
function () {
$('#tag8').val("2017-06-29");
},
function () {
$('#tag9').val("2015-06-29");
},
function () {
$('#tag10').val("This is the test tasks' description.");
},
function () {
$(".id1").trigger("click");
},
function () {
$(".id2").val("buy oranges");
}];
并使用计时器递归使用:
function processoperations(ops){
// Run the first operation
ops[0]();
setTimeout(function(){
if (ops.length > 1){
// Go recursive after 2 seconds
processoperations(ops.slice(1));
}
}, 2000);
}
从这样开始:
processoperations(operations);
这允许您每隔一段时间处理任何代码。替代方案(如其他人提到的)是一个自动化测试工具(如Selenium)如果这实际上是一个测试问题。更新:您已经提到不允许使用Selenium。