列表翻页,选中目标记录

说明:当添加一条记录时,该条记录在列表中的位置有多重情况,在列表的第一页第一项、在列表的最后一页最后一项、在列表中的任意一个位置,针对翻页选中一条目标记录具体事项一项两种情况

情况一:新添加的记录在列表的任意一个位置时,选中该条记录并点击选择然后点击【更新产品】按钮

具体实现代码如下(包含需要调用其他共方法):

 

/**
 * 翻页逐条比较获得对应的产品
 * 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);
					
		}
	}
}

  

  

原文地址:https://www.cnblogs.com/baixiaozheng/p/5029739.html