无法在Selenium Webdriver

时间:2015-08-18 11:33:14

标签: selenium selenium-webdriver

我是Selenium webdriver的新手。我的网站有一个菜单按钮,其中包含更多子菜单。可以通过将鼠标悬停在“菜单”按钮上或单击它来访问子菜单按钮。我已尝试过各种组合但截至目前尚未成功。源代码为:

div class="divAPOAppMenu">
<ul id="projectDashboardMenu" class="sf-menu sf-js-enabled sf-arrows">
   <li>
   <li class="">
   <a class="sf-with-ul" href="#">Manage Assessment</a>
   <ul style="display: none;">
   <li>
       <a id="btnAddAssessment">
       <img style="height: 20px; width: 20px; float: left; margin-right: 5px; border: none;" src="../../Images/AddIcons.png" alt="">
       New Assessment
       </a>
       </li>

我正在尝试使用以下文字“新评估”点击子菜单:

Actions action=new Actions(driver);
WebElement moveToManageAssessmnt = driver.findElement(By.linkText("Manage Assessment"));
action.moveToElement(moveToManageAssessmnt).moveToElement(driver.findElement(By.linkText("New Assessment"))).click().perform();

这没有用。 我也尝试过使用:

driver.findElement(By.linkText("Manage Assessment")).click();
driver.findElement(By.linkText("New Assessment")).click();

我最终知道如何继续进行并且没有可用的指导。有人可以建议我如何点击子菜单按钮?任何形式的帮助将受到高度赞赏!在此先感谢!!!

3 个答案:

答案 0 :(得分:0)

试试这个:

driver.FindElement(By.Xpath("//ul[contains(@id, 'projectDashboardMenu')]/a[contains(text(), 'Manage Assessment']").click();

答案 1 :(得分:0)

试试这个

Actions mouseAction = new Actions(driver);
    mouseAction.moveToElement(driver.findElement(By.linkText("Manage Assessment")).perform();
    mouseAction.moveToElement(driver.findElement(By.linkText("New Assessment")).click().perform();

答案 2 :(得分:0)

您刚学到的(无意中)是Selenium不会(默认情况下,您可以使用google的解决方法)与用户不可见的WebElement进行交互。所以...你不能点击子菜单,直到用悬停显示它。我写了一个函数来悬停一个元素来处理第一部分。

public static void hoverElement(WebDriver driver, WebElement element)
{
    Actions builder = new Actions(driver);
    builder.moveToElement(element).perform();
}

完成悬停后,您应该可以点击所需的元素。

hoverElement(driver, driver.findElement(By.linkText("Manage Assessment")));
driver.findElement(By.linkText("New Assessment")).click();