说明:当添加一条记录时,该条记录在列表中的位置有多重情况,在列表的第一页第一项、在列表的最后一页最后一项、在列表中的任意一个位置,针对翻页选中一条目标记录具体事项一项两种情况
情况一:新添加的记录在列表的任意一个位置时,选中该条记录并点击选择然后点击【更新产品】按钮
具体实现代码如下(包含需要调用其他共方法):
/** * 翻页逐条比较获得对应的产品 * webs:某一页所有的tr对象,dr:dr对象 */ public static WebElement getpoduct(List<WebElement> wbs,WebDriver dr,By by){ int trNum=wbs.size();//获取某一页面中的所有tr对象个数 WebElement wb=null; if(trNum>0){ for (int i = 0; i < trNum; i++) { wb=wbs.get(i);//获得tr对象 String id=wb.findElement(by).getText();//获取tr中某一列的值 System.out.println("产品ID"+id); if (i<trNum) {//在第一页范围内 if(id.equals("15")){ //dr.findElement(By.xpath("/html/body/div[2]/div/div[2]/div[2]/div[2]/table/tbody/tr[1]/td[1]/div/input")).click(); return wb; }else { wb=null; continue; } }else {//重新获取新一组tr对象进行循环比较 return null; } } } return wb; } /** * java从字符串中提取数字 * str:传递过来的字符串 */ public static List<String> getNUm(String str){ str.trim(); //String number=lNum.substring(3, 4);//直接获取传递过来的字符串中的数字(适用于字符串中仅仅包含一个数字) List<String> ss=new ArrayList<String>(); for(String sss:str.replaceAll("[^0-9]", ",").split(",")){//首先把非数字的替换成“,”,然后用“,”把字符串分割成一个数组 if (sss.length()>0) ss.add(sss); } return ss; }
/** * 更新产品 * */ @Test(enabled=true) public void upProduct(){ mj.jumpaccounts(dr);//触发一级菜单 mj.jumpaccountsT_1(dr);//触发二级菜单 toFram(dr, frameid); /** * 进入到修改产品界面 */ if(!isExist(dr, By.className("datagrid-cell-check"))){//无记录时添加新的记录 //addProduct(); }else {//有记录时执行修改操作(循环翻看每一页来获得需要修改的产品) //翻页相关代码一:tr作为变量,进行循环找到对应的产品然后执行修改(新添加的记录不在最后一页或者第一页时) //获得显示总页数的那串字符 String lNum=fFind(dr, By.xpath("/html/body/div[2]/div/div[3]/table")).findElement(By.xpath("/html/body/div[2]/div/div[3]/table/tbody/tr/td[8]/span")).getText(); String number=Demo.getNUm(lNum).get(0);//获取总页数 int number1=Integer.parseInt(number);//转换成int类型 //外层循环的是是否要翻页,某一页是否有相符合的项,里面在调用对比是否有复合项循环 for (int i = 1; i <= number1; i++) { List<WebElement> trs=dr.findElement(By.xpath("/html/body/div[2]/div/div[2]/div[2]/div[2]/table")).findElements(By.tagName("tr"));//获取每一页所有的tr对象 WebElement wbtr=Demo.getpoduct(trs,dr,By.className("datagrid-cell"));//获取具体的webElemnet对象(tr对象) if (wbtr!=null) { if (!wbtr.isSelected()) { wbtr.click();//返回对应的对象则点击选中 }else { System.out.println("选中产品时出错"); }
break; } else {//执行翻页操作 WebElement btn_next=fFind(dr, By.xpath("/html/body/div[2]/div/div[3]/table/tbody/tr/td[10]/a/span/span/span")); btn_next.click(); Demo.slp(3000); continue; } } String js="document.getElementById("updateproduct").click()"; exeJS(dr, js);//执行js,(点击修改产品按钮) Demo.slp(3000);
情况二:新添加的记录在列表的最后一页的最后一个位置时,选中该条记录并点击选择然后点击【更新产品】按钮
具体实现代码如下(包含需要调用其他共方法):
/** * java从字符串中提取数字 * str:传递过来的字符串 */ public static List<String> getNUm(String str){ str.trim(); //String number=lNum.substring(3, 4);//直接获取传递过来的字符串中的数字(适用于字符串中仅仅包含一个数字) List<String> ss=new ArrayList<String>(); for(String sss:str.replaceAll("[^0-9]", ",").split(",")){//首先把非数字的替换成“,”,然后用“,”把字符串分割成一个数组 if (sss.length()>0) ss.add(sss); } return ss; } }
/** * 更新产品 * */ @Test(enabled=true) public void upProduct(){ mj.jumpaccounts(dr);//触发一级菜单 mj.jumpaccountsT_1(dr);//触发二级菜单 toFram(dr, frameid); if(!isExist(dr, By.className("datagrid-cell-check"))){//无记录时添加新的记录 //addProduct(); }else {//有记录时执行修改操作(循环翻看每一页来获得需要修改的产品) //翻页相关代码一:tr作为变量,进行循环找到对应的产品然后执行修改(新添加的记录在最后一页的最后一项时) //获得显示总页数的那串字符 String lNum=fFind(dr, By.xpath("/html/body/div[2]/div/div[3]/table")).findElement(By.xpath("/html/body/div[2]/div/div[3]/table/tbody/tr/td[8]/span")).getText(); String number=Demo.getNUm(lNum).get(0);//获取总页数 int number1=Integer.parseInt(number);//转换成int类型 //如果新添加的产品在第一页或者最后一页,则可以直接先翻到那页然后再进行对比找到需要修改的产品(添加的记录直接在第一页或者最后一页时) if (number1>1) {//列表有多页时,且新添加的记录不在第一页时是在最后一页时,需要点击最后一页翻页 WebElement lastpag=fFind(dr, By.xpath("/html/body/div[2]/div/div[3]/table/tbody/tr/td[11]/a"));//点击最后一页翻页 lastpag.click(); Demo.slp(2000); List<WebElement> trs1=fFind(dr, By.xpath("/html/body/div[2]/div/div[2]/div[2]/div[2]/table")).findElements(By.tagName("tr"));//获得最后一页所有的tr对象 int size=trs1.size(); int lastindex=size-1;//最后一条的索引 WebElement lastwb=trs1.get(lastindex);//获取该界面的最后一条元素 lastwb.click(); }else { //获取该界面的最后一条数据 List<WebElement> trs1=fFind(dr, By.xpath("/html/body/div[2]/div/div[2]/div[2]/div[2]/table")).findElements(By.tagName("tr"));//获得第一页所有的tr对象 int size=trs1.size(); int lastindex=size-1;//最后一条的索引 WebElement lastwb=trs1.get(lastindex);//获取该界面的最后一条元素 lastwb.click(); } String js="document.getElementById("updateproduct").click()"; exeJS(dr, js);//执行js,(点击修改产品按钮) Demo.slp(3000); } } }