public String navigate(String path) {
		StringBuffer result = new StringBuffer();
		String [] pathes = path.split(">");
		
		driver.switchTo().defaultContent();
		driver.switchTo().frame(naviFrame);
		WebElement mainTask = driver.findElement(By.xpath(XPATH_MAINTASK + "/a[@title='" + pathes[0].trim() + "']"));
		if (null != mainTask) {
			mainTask.click();
			result.append("> Click entry '" + pathes[0] + "'"
					+ System.getProperty("line.separator"));
		} else {
			result.append("Failed to find corresponding entry for main task '" + pathes[0] + "'"
					+ System.getProperty("line.separator"));
			return result.toString();
		}
		
		WebElement subTask = null;
		if (pathes.length == 2) {
			subTask = mainTask.findElement(By.xpath(XPATH_MAINTASK + "/" + XPATH_NAVCHILD 
					+ "/ul/li/a[text()='" + pathes[1].trim() + "']"));
		} else if (pathes.length == 3) {
			subTask = mainTask.findElement(By.xpath(XPATH_MAINTASK + "/" + XPATH_NAVCHILD 
					+ "/div[@class='sub-task']/a[@title='" + pathes[1].trim() + "']"));
		}
		if (null != subTask) {
			subTask.click();
			result.append("> Click sub entry '" + pathes[1] + "'"
					+ System.getProperty("line.separator"));
		} else {
			result.append("Failed to find corresponding entry for sub task '" + pathes[1] + "'"
					+ System.getProperty("line.separator"));
			return result.toString();
		}
		
		WebElement subChild = null;
		if (pathes.length == 3) {
			subChild = subTask.findElement(By.xpath(XPATH_MAINTASK + "/" + XPATH_NAVCHILD 
					+ "/div[@class='sub-child-container']/ul/li/a[text()='" + pathes[2].trim() + "']"));
			if (null != subChild) {
				subChild.click();
				result.append("> Click sub child entry '" + pathes[2] + "'"
						+ System.getProperty("line.separator"));
			} else {
				result.append("Failed to find corresponding entry for sub child '" + pathes[2] + "'"
						+ System.getProperty("line.separator"));
			}
		}
		
		driver.switchTo().defaultContent();
		
		return result.toString();
	}