美文网首页
Java中循环的使用(一)

Java中循环的使用(一)

作者: 墨色尘埃 | 来源:发表于2020-05-19 11:05 被阅读0次

如图所示,当“添加行”处有很多的数据时,点击了“提交”按钮之后,等待跳出弹出框的时间就会很长,不知道什么时候能跳出来。弹出框的弹出时间随着数据的多少而变化,所以这里要用到循环

提交大批量数据.png 弹出框.png

定义一个变量num,num的值由记录条数决定

        // 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;
            }
        }

再对num进行for循环,每次停顿0.3秒后去校验状态,看弹出框是否有弹出来

        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);

            if (o != null && o.equals(true)) {
                isValid = true;
                System.out.println("Object:" + o + "__num=" + num + "__i=" + i + "__i * 300=" + i * 300);
                logger.error("提交之后跳出弹出框", "Object:" + o + "/num=" + num + "/i=" + i + "/i*300=" + i * 300);
                break;
            }
        }
        if (!isValid) {
            throw new BusinessException("记录提交失败,祥云校验失败");
        }

完整的submit方法

    public void submit(List<LinkedHashMap> matchOrders, ChromeDriver driver, String mmzyjCookie) throws BusinessException,
            InterruptedException {

        //添加mm系统cookie
        driver.manage().addCookie(new Cookie("CurrentOrg_", "3202100010", cookiemmjsUrl, "/mm_zyj", null, true));
        driver.manage().addCookie(new Cookie("JSESSIONID", mmzyjCookie.substring(mmzyjCookie.indexOf("=") + 1, mmzyjCookie
                .length()), cookiemmjsUrl, "/mm_zyj", null, true));

        //点“提交按钮”
        String script = "angular.element(document.querySelector('[ng-controller=ticketManageController]')).scope()" +
                ".subData()";
        driver.executeScript(script);


        // 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;
            }
        }

        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("记录提交失败,祥云校验失败");
        }

        // TODO: 2019/12/17 postman测试用时候,注释
        boolean isSelected = false;
        for (int i = 0; i < 10; i++) {
            WebElement element = null;
            try {
                Thread.sleep(300);
                element = driver.findElementById("usertask1_0510048312");
            } catch (Exception ex) {

            }
            if (element != null) {
                //调用一下js选中下一个节点的候选人
                driver.executeScript("document.getElementById('usertask1_0510048312').checked=true");
                isSelected = true;
                break;
            }
        }

        if (!isSelected) {
            throw new BusinessException("记录提交失败,未选中提交人");
        }


//        最后一步提交
        WebElement element2 = driver.findElement(By.cssSelector("button[ng-show='nodes']"));
        element2.click();

    }

相关文章

  • Java中循环的使用(一)

    如图所示,当“添加行”处有很多的数据时,点击了“提交”按钮之后,等待跳出弹出框的时间就会很长,不知道什么时候能跳出...

  • 2018-10-18 Java 小知识

    Java 可使用 break + 标签来跳出多重循环 参考资料java 中的三种跳出多重循环的方式 Java 泛型...

  • Kotlin常用语法

    java中的switch kotlin使用when代替java中的switch,但比switch强大的多 for循环

  • 快速入门2

    循环与条件 Python 中 for 循环类似于 Java 的 foreach 列表解析 :在一行中使用for 循...

  • Java for循环的几种用法

    Java中经常用到for循环、while循环、do...while循环,这里简单分析这三中循环语句的的使用区别 p...

  • Day06

    Java中对while(true)的理解 while(true)作为无限循环,经常在不知道循环次数的时候使用,并且...

  • Java循环跳转语句

    1.break; 在 Java 中,我们可以使用 break 语句退出指定的循环,直接执行循环后面的代码。 例如,...

  • java如何实现原子操作CAS

    在Java中可以通过锁和循环CAS的方式来实现原子操作。 使用循环CAS实现原子操作 JVM中的CAS操作正是利用...

  • java中的循环语句有哪些

    java中的循环语句有哪些 Java中有三种主要的循环结构: while 循环 do…while 循环 for 循...

  • java 多重for循环跳出方式

    在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的brea...

网友评论

      本文标题:Java中循环的使用(一)

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