• 用WebDriver实现基于jira过滤器视图的统计自动化


    在Jira上通过过滤器我们可以做出多种视图,以方便统计我们想要收集的结果。比如:我想查看所有分派给我的任务。在Jira上,我保存了一个过滤器,叫做“分派给我的所有任务”。这个过滤器可以过滤出所有分配给我的任务。下面我要对每一个分配给我的任务做一下统计,收集一些关键的字段值,并输出到excel表:

    利用WebDriver实现,代码如下:

    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import javax.swing.filechooser.FileSystemView;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;
    
    public class TestInfoGet {
    
        public static void main(String[] args) throws InterruptedException, IOException {
            String webUrl = "http://jira.ms.netease.com/browse/LOTTERY-xxx?filter=xxxx";
            WebDriver webDriver = new FirefoxDriver();
            webDriver.get(webUrl);
            waitUntilPageLoadedId(webDriver, "login-form-username");
            webDriver.findElement(By.id("login-form-username")).sendKeys("username");
            webDriver.findElement(By.id("login-form-password")).sendKeys("password");
            webDriver.findElement(By.id("login-form-submit")).click();
            webDriver.get(webUrl);
    
            // Main title.
            waitUntilPageLoadedId(webDriver, "search-header-view");
            String mainTitle = webDriver.findElement(By.id("search-header-view")).findElement(By.className("search-title"))
                    .getText();
            System.out.println(mainTitle);
    
            // Write an excel.
            try {
                FileSystemView fsv = FileSystemView.getFileSystemView();
                WritableWorkbook book = Workbook
                        .createWorkbook(new File(fsv.getHomeDirectory() + "\" + mainTitle + ".xls"));
                WritableSheet sheet = book.createSheet(mainTitle, 0);
                List<String> labels = Arrays.asList("活动名称", "JIRA链接", "类型", "状态", "优先级", "解决结果", "模块", "平台", "测试类型", "bug数",
                        "用例数据", "报告人", "产品人员", "前端", "开发", "分派给");
                for (int i = 0; i < labels.size(); i++) {
                    sheet.addCell(new Label(i, 0, labels.get(i)));
                }
    
                // Get all sub titles.
                waitUntilPageLoadedClass(webDriver, "issue-list");
                WebElement webElement = webDriver.findElement(By.className("issue-list"));
                List<WebElement> webElements = webElement.findElements(By.tagName("li"));
                List<String> titles = new ArrayList<String>();
                for (WebElement webElement2 : webElements) {
                    titles.add(webElement2.getAttribute("title"));
                }
    
                // For each sub title.
                for (int i = 1; i <= titles.size(); i++) {
                    String xPath = "//*[@title='" + titles.get(i - 1) + "']";
                    webDriver.findElement(By.xpath(xPath)).click();
                    waitUntilPageLoadedId(webDriver, "issue-content");
                    Thread.sleep(1000);
                    System.out.println("--------------------------------------------");
                    // Get the JIRA link.
                    System.out.println("活动名称:" + webDriver.findElement(By.id("summary-val")).getText());
                    sheet.addCell(new Label(0, i, webDriver.findElement(By.id("summary-val")).getText()));
                    String href = webDriver.findElement(By.id("key-val")).getAttribute("href");
                    // String link = "http://jira.ms.netease.com/browse/" + href;
                    System.out.println("JIRA链接:" + href);
                    sheet.addCell(new Label(1, i, href + " "));
                    waitUntilPageLoadedId(webDriver, "issuedetails");
                    // Issue details.
                    WebElement issueDetails = webDriver.findElement(By.id("issuedetails"));
                    String detailName, detailValue;
                    for (WebElement issueDetail : issueDetails.findElements(By.tagName("li"))) {
                        detailName = issueDetail.getText().split(":")[0];
                        detailValue = issueDetail.getText().split(":")[1].replaceAll("
    ", "").split(" ")[0];
                        System.out.println(detailName + ":" + detailValue);
                        sheet = insertData(detailName, detailValue, sheet, i);
                    }
                    // Custom field module.
                    try {
                        WebElement customModule = webDriver.findElement(By.id("customfieldmodule"));
                        String moduleText, moduleName, moduleValue;
                        for (WebElement cModule : customModule.findElements(By.className("item"))) {
                            moduleText = cModule.getText().replaceAll("
    ", "");
                            System.out.println(moduleText);
                            moduleName = moduleText.split(":")[0];
                            moduleValue = moduleText.split(":")[1];
                            sheet = insertData(moduleName, moduleValue, sheet, i);
                        }
                    } catch (Exception e) {
                        // TODO: handle exception
                        System.out.println(e.toString());
                    }
                    // Participates.
                    WebElement pd = webDriver.findElement(By.id("peoplemodule"))
                            .findElement(By.className("people-details"));
                    String pCategory, pName;
                    for (WebElement webElement3 : pd.findElements(By.tagName("dl"))) {
                        System.out.println(webElement3.findElement(By.tagName("dt")).getText()
                                + webElement3.findElement(By.tagName("dd")).getText());
                        pCategory = webElement3.findElement(By.tagName("dt")).getText().split(":")[0];
                        pName = webElement3.findElement(By.tagName("dd")).getText();
                        sheet = insertData(pCategory, pName, sheet, i);
                    }
                }
                book.write();
                book.close();
            } catch (WriteException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
    
        }
    
        private static WritableSheet insertData(String name, String value, WritableSheet sheet, int i)
                throws RowsExceededException, WriteException {
            // TODO Auto-generated method stub
            int j = 16;
            switch (name) {
            case "类型":
                j = 2;
                sheet.addCell(new Label(j, i, value));
                break;
            case "状态":
                j = 3;
                sheet.addCell(new Label(j, i, value));
                break;
            case "优先级":
                j = 4;
                sheet.addCell(new Label(j, i, value));
                break;
            case "解决结果":
                j = 5;
                sheet.addCell(new Label(j, i, value));
                break;
            case "模块":
                j = 6;
                sheet.addCell(new Label(j, i, value));
                break;
            case "平台":
                j = 7;
                sheet.addCell(new Label(j, i, value));
                break;
            case "测试类型":
                j = 8;
                sheet.addCell(new Label(j, i, value));
                break;
            case "bug数":
                j = 9;
                sheet.addCell(new Label(j, i, value));
                break;
            case "用例数据":
                j = 10;
                sheet.addCell(new Label(j, i, value));
                break;
            case "用例数":
                j = 10;
                sheet.addCell(new Label(j, i, value));
                break;
            case "报告人":
                j = 11;
                sheet.addCell(new Label(j, i, value));
                break;
            case "产品人员":
                j = 12;
                sheet.addCell(new Label(j, i, value));
                break;
            case "前端":
                j = 13;
                sheet.addCell(new Label(j, i, value));
                break;
            case "开发":
                j = 14;
                sheet.addCell(new Label(j, i, value));
                break;
            case "分派给":
                j = 15;
                sheet.addCell(new Label(j, i, value));
                break;
            }
            return sheet;
        }
    
        private static void waitUntilPageLoadedId(WebDriver iw, String v) throws InterruptedException {
            try {
                iw.findElement(By.id(v));
            } catch (Exception ex) {
                System.out.println(ex.toString());
                Thread.sleep(1000);
                waitUntilPageLoadedId(iw, v);
            }
        }
    
        private static void waitUntilPageLoadedClass(WebDriver iw, String v) throws InterruptedException {
            try {
                iw.findElement(By.className(v));
            } catch (Exception ex) {
                System.out.println(ex.toString());
                Thread.sleep(1000);
                waitUntilPageLoadedClass(iw, v);
            }
        }
    
    }
  • 相关阅读:
    普通平衡树(treap与splay模板)
    NOIP2009T4 靶形数独
    单调队列模板
    NOIP2010引水入城
    数差
    NOIP2016DAY2T1 组合数问题
    NOIP2016 D2T3 愤怒的小鸟
    NOIP双栈排序
    膜拜
    斐波那契数列
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/5405858.html
Copyright © 2020-2023  润新知