zoukankan      html  css  js  c++  java
  • 如何使用List<HashMap<String, String>>详细讲解

    场景:要循环界面Table数据源与导出Excel数据源作对比。

    说明: List<HashMap<String,String>>

          List中每一项都是一个HashMap

               HashMap<String,String> map中 key是一个String,value也是一个String

    一: 如何定位界面Table 一整行的定位。

            XPath写法示例://table[contains(@class,'condensed')][contains(@style,'margin-bottom')]/tbody/tr

            注意事项:要确保定位只能匹配唯一的Code

    二: Feature 示例:

        

    1  Scenario: E-1342:休假结余设立导出,跟菜单显示一致
    2  When I click on menu 时间管理>休假结余>休假结余设立 from HCM page
    3  #Then I select leaveCode for NAL|SL2|OL|
    4  Then I advance search staff no 0001
    5  Then I select leaveCode for NAL
    6  Then I click export button leave Banlance
    7  Then verify the export Excel Data compare with Interface table

    三 :Step 示例:

    @Then("^verify the export Excel Data compare with Interface table$")
        public void verify_the_export_Excel_Data_compare_with_Interface_table() throws Exception {
            List<HashMap<String, String>> previewData = vp.getLeaveBanlaceList(); //获取Table数据源集合
            String fileName = anp.downloadFile();
            vp.verifyExportExcelDataCompareWithInterfaceTable(fileName, previewData);
        }

    四、Page 示例

     1         /**
     2          * 用于休假结余设立菜单,返回页面的List<LinkedHashMap>
     3          * @return
     4          * @throws Exception
     5          */
     6     public List<HashMap<String, String>> getLeaveBanlaceList() throws Exception {
     7         List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
     8         List<WebElement> trList = findAll(By.xpath("//table[contains(@class,'condensed')]/tbody/tr")); 
     9         for (int i = 1; i<trList.size(); i++) {
    10             String trRowXpath = "//table[contains(@class,'condensed')][contains(@style,'margin-bottom')]/tbody/tr["+ i +"]";
    11             LinkedHashMap<String, String> dataOneRow = getRowLeaveBanlanceData(trRowXpath);  
    12             data.add(dataOneRow);
    13         }
    14         return data;
    15     }
    调用getRowLeaveBanlanceData方法,得到LinkedHashMap
     1 public LinkedHashMap<String, String> getRowLeaveBanlanceData(String trRowXpath) throws Exception {
     2         waitLoading();
     3         LinkedHashMap<String, String> actualData = new LinkedHashMap<String, String>();    
     4         List<WebElement> headers = waitFor(By.xpath(trRowXpath + "/../../thead/tr/td"));
     5         List<WebElement> values = waitFor(By.xpath(trRowXpath + "/td"));
     6         for (int i = 1 ; i < headers.size(); i++) {
     7             if (!headers.get(i).getText().trim().isEmpty()) {
     8                 actualData.put(headers.get(i).getText().trim(), values.get(i).getText().trim());
     9             }
    10         }
    11         return actualData;
    12     }
    13         


    输出结果:{员工工号=0001, 姓名=黄明, 休假代码=NAL, 休假名称=年假, 上年结余=0, 本年享有=96, 本年调整=0, 下年享有=96, 下年调整=0, 合共已用=0, 备注=}

      

     
  • 相关阅读:
    two pointers思想 ---- 利用两个i, j两个下标,同时对序列进行扫描,以O(n)复杂度解决问题的一种思想
    二分法
    区间贪心
    error C2825: '_Iter': 当后面跟“::”时必须为类或命名空间 -- 原因可能是参数错误或者自定义函数名和库函数名冲突
    模态窗口的定时关闭
    数据结构(二十二)二叉树遍历算法的应用与二叉树的建立
    数据结构(二十一)二叉树的非递归遍历算法
    数据结构(二十)二叉树的递归遍历算法
    数据结构(十九)二叉树的定义和性质
    数据结构(十八)树的定义与存储结构
  • 原文地址:https://www.cnblogs.com/Shanghai-vame/p/8353754.html
Copyright © 2011-2022 走看看