我是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();
我最终知道如何继续进行并且没有可用的指导。有人可以建议我如何点击子菜单按钮?任何形式的帮助将受到高度赞赏!在此先感谢!!!
答案 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();