如何选择最末层的菜单?
我的办法是自定义一个组合,“
1.400客服进线->400客服进线->400客服进线->青岛汽车评估师协会”;
2.寻找关系,从父找子
代码参照,每个项目会不一样,逻辑就是每个层级菜单不同的遍历,最后按照文本找到最后一级菜单
driver.findElement(By.xpath("//*[@id='customer_source0_main']/div/div[2]/div/span/span")).click();
WebElement firstNode = null;
WebElement secondNode = null;
String[] arr1 = dataSource.split("->");
String firstNodeValue = arr1[0];
String secondNodeValue = arr1[1];
String chooseNodeValue = arr1[2];
//WebElement datasourceRoot = driver.findElement(By.xpath("/html/body/div[53]/div/ul"));
//一级选项
List<WebElement> firstNodeList = driver.findElements(By.xpath("/html/body/div[53]/div/ul/li"));
for(WebElement ele : firstNodeList){
List<WebElement> firstDivList = ele.findElements(By.tagName("div"));
for(WebElement _ele : firstDivList){
if(_ele.findElements(By.tagName("span")).get(_ele.findElements(By.tagName("span")).size()-1).
getText().contains(firstNodeValue)){
_ele.findElements(By.tagName("span")).get(0).click();
firstNode = ele;
break;
}
}
}
//二级选项
System.out.println("1"+firstNode.findElement(By.tagName("div")).getAttribute("id"));
List<WebElement> secondNodeList = firstNode.findElement(By.tagName("ul")).findElements(By.tagName("li"));
System.out.println("长度为:"+secondNodeList.size());
for(WebElement ele : secondNodeList){
List<WebElement> secondDivList = ele.findElements(By.tagName("div"));
for(WebElement _ele : secondDivList){
List<WebElement> list = _ele.findElements(By.tagName("span"));
if(list.get(list.size()-1).getText().contains(secondNodeValue)){
_ele.findElements(By.tagName("span")).get(1).click();
secondNode = ele;
break;
}
}
}
System.out.println("2"+secondNode.findElement(By.tagName("div")).getAttribute("id"));
//最后一级
List<WebElement> chooseNodeList = secondNode.findElement(By.tagName("ul")).findElements(By.tagName("li"));
for(WebElement ele : chooseNodeList){
List<WebElement> chooseList = ele.findElements(By.tagName("span"));
if(chooseList.get(chooseList.size()-1).
getText().contains(chooseNodeValue)){
ele.click();
}
}
driver.findElement(By.xpath("//*[@id='customer_source0_main']/div/div[2]/div/span/span")).click();
WebElement firstNode = null;
WebElement secondNode = null;
String[] arr1 = dataSource.split("->");
String firstNodeValue = arr1[0];
String secondNodeValue = arr1[1];
String chooseNodeValue = arr1[2];
//WebElement datasourceRoot = driver.findElement(By.xpath("/html/body/div[53]/div/ul"));
//一级选项
List<WebElement> firstNodeList = driver.findElements(By.xpath("/html/body/div[53]/div/ul/li"));
for(WebElement ele : firstNodeList){
List<WebElement> firstDivList = ele.findElements(By.tagName("div"));
for(WebElement _ele : firstDivList){
if(_ele.findElements(By.tagName("span")).get(_ele.findElements(By.tagName("span")).size()-1).
getText().contains(firstNodeValue)){
_ele.findElements(By.tagName("span")).get(0).click();
firstNode = ele;
break;
}
}
}
//二级选项
System.out.println("1"+firstNode.findElement(By.tagName("div")).getAttribute("id"));
List<WebElement> secondNodeList = firstNode.findElement(By.tagName("ul")).findElements(By.tagName("li"));
System.out.println("长度为:"+secondNodeList.size());
for(WebElement ele : secondNodeList){
List<WebElement> secondDivList = ele.findElements(By.tagName("div"));
for(WebElement _ele : secondDivList){
List<WebElement> list = _ele.findElements(By.tagName("span"));
if(list.get(list.size()-1).getText().contains(secondNodeValue)){
_ele.findElements(By.tagName("span")).get(1).click();
secondNode = ele;
break;
}
}
}
System.out.println("2"+secondNode.findElement(By.tagName("div")).getAttribute("id"));
//最后一级
List<WebElement> chooseNodeList = secondNode.findElement(By.tagName("ul")).findElements(By.tagName("li"));
for(WebElement ele : chooseNodeList){
List<WebElement> chooseList = ele.findElements(By.tagName("span"));
if(chooseList.get(chooseList.size()-1).
getText().contains(chooseNodeValue)){
ele.click();
}
}