多级菜单递归 python selenium处理多级子菜单_html

如何选择最末层的菜单?

我的办法是自定义一个组合,“

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();
			}
		}