根据总条数,动态休眠随机时间
2020-01-17 本文已影响0人
墨色尘埃
总条数是动态变化的,那么其所依赖的时间也要改变。
比如:
total=100,那么time=50;
total=150,那么time=70;
total=200,那么time=80;
..............
用线程休眠来做到时间的延迟,这里先确定需要循环的次数
// put数据到列表的时候,因为数据量很大,所以这里休眠时间根据数据动态变化
int num = 20;
if (matchOrders != null && matchOrders.size() > 0) {
int total = matchOrders.size(); //总条数
int i = total / 10; //商
int length = String.valueOf(i).length(); //商的长度
if (length == 1 && (2 <= i && i <= 5)) { //数据量在20~59
num = 100;
} else if (length == 1 && (6 <= i && i <= 9)) { //数据量在60~99
num = 200;
} else if (length == 2 && (10 <= i && i <= 19)) { //数据量在100~199,休眠200*300
num = 300;
} else if (length == 2 && (20 <= i && i <= 29)) { //数据量在200~299
num = 400;
} else if (length == 2 && (30 <= i && i <= 39)) { //数据量在300~399
num = 600;
} else if (length == 2 && (40 <= i && i <= 49)) { //数据量在400~499
num = 800;
} else if (length == 2 && (50 <= i && i <= 59)) { //数据量在500~599
num = 1000;
}
}
然后根据次数for循环,休眠时间
for (int i = 0; i < num; i++) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
但是上面的太简单了,一般我们会根据某个状态判断提前结束for循环。这里根据执行javascript,返回Object并对其进行判断
for (int i = 0; i < num; i++) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
//调用校验状态
String script1 = "return angular.element(document.querySelector" +
"('[ng-controller=ticketManageController]'))" +
".scope()" +
".view.showTaskChooseUserDialog";
Object o = driver.executeScript(script1);
System.out.println("Object:" + o + "__num=" + num + "__i=" + i + "__i * 300=" + i * 300);
if (o != null && o.equals(true)) {
break;
}
}
如果for循环结束了,还是没有达到指定的休眠时间,就报错,所以还需要一个变量记录是否成功,定义一个boolean类型变量
boolean isValid = false;
for (int i = 0; i < num; i++) {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
//调用校验状态
String script1 = "return angular.element(document.querySelector" +
"('[ng-controller=ticketManageController]'))" +
".scope()" +
".view.showTaskChooseUserDialog";
Object o = driver.executeScript(script1);
System.out.println("Object:" + o + "__num=" + num + "__i=" + i + "__i * 300=" + i * 300);
if (o != null && o.equals(true)) {
isValid = true;
break;
}
}
if (!isValid) {
throw new BusinessException("记录提交失败,祥云校验失败");
}