Webdriver没有找到xpath元素

时间:2016-05-19 11:11:42

标签: java selenium xpath selenium-webdriver

我正在尝试使用Selenium IDE导出的webdriver的Java实现来编写一些Selenium测试来测试Pandora FMS。

初始登录部分工作正常:

driver = new FirefoxDriver();
baseUrl = "http://brmew.lab.brmew.es";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl + "/pandora_console/index.php");
driver.findElement(By.id("nick")).clear();
driver.findElement(By.id("nick")).sendKeys("my");
driver.findElement(By.id("pass")).clear();
driver.findElement(By.id("pass")).sendKeys("credentials");
driver.findElement(By.id("submit-login_button")).click();

然后,有问题的部分,点击菜单。我尝试过最简单的方法:

driver.findElement(By.xpath("//ul[@id='subViews']/li[4]/a/div")).click();

但它不起作用,所以我尝试了:

WebElement myDynamicElement = (new WebDriverWait(driver, 10))
          .until(ExpectedConditions.elementToBeClickable(By.xpath("//ul[@id='subViews']")));
myDynamicElement.click();

您可以在this link中找到我正在测试的HTML(这太大了,无法在此处粘贴)

隐藏菜单

Hidden menu

显示的菜单

Shown menu

2 个答案:

答案 0 :(得分:1)

你有任何例外吗?您尝试单击的元素submemu项似乎是不可见的。如果它显示在主菜单上单击或鼠标悬停,则需要在对元素执行单击操作之前执行此操作。例如:

//Click main menu to open submenu
driver.findElement(By.xpath(".//*[@id='Views']/div")).click();

//now access submenu
driver.findElement(By.xpath(".//ul[@id='subViews']/li[4]/a")).click();

或者更优选的方式是:

WebElement viewsMenu = driver.findElement(By.xpath(".//*[@id='Views']/div"));
viewsMenu.click();
//or mouse over 
Actions action = new Actions(webdriver);
action.moveToElement(viewsMenu).build().perform();

//now access submenu
viewsMenu.findElement(By.xpath(".//ul[@id='subViews']/li[4]/a")).click();

答案 1 :(得分:0)

从您给定的链接,我无法找到监控>意见>代理商细节 但似乎首先你必须点击

monitoring and than wait

而不是点击

views and wait

而不是点击你的

agent detail

鼠标悬停使用以下代码

//get element as ur wish by css or xpath or id
WebElement elem = driver.findElement(By.cssSelector("ur locator"));
Actions builder = new Actions(driver);  
builder.moveToElement(elem).perform();
makeWait(5);

比显示元素后,再次获取下一个元素并使用代码进行悬停。