说明:当添加一条记录时,该条记录在列表中的位置有多重情况,在列表的第一页第一项、在列表的最后一页最后一项、在列表中的任意一个位置,针对翻页选中一条目标记录具体事项一项两种情况
情况一:新添加的记录在列表的任意一个位置时,选中该条记录并点击选择然后点击【更新产品】按钮
具体实现代码如下(包含需要调用其他共方法):
/**
* 翻页逐条比较获得对应的产品
* 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);
}
}
}