美文网首页
根据总条数,动态休眠随机时间

根据总条数,动态休眠随机时间

作者: 墨色尘埃 | 来源:发表于2020-01-17 15:52 被阅读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("记录提交失败,祥云校验失败");
            }
    

    相关文章

      网友评论

          本文标题:根据总条数,动态休眠随机时间

          本文链接:https://www.haomeiwen.com/subject/ztnczctx.html