我有一个网页,包含一个引导导航栏。这个导航栏有三个下拉菜单。
我想访问这些下拉菜单之一,并通过在Java中使用Selenium Webdriver从中选择一个选项。
问题是所有三个下拉菜单都有相同的HTML,并且没有唯一的标识符来区分它们。
谁能指导我如何访问这些下拉菜单在selenium webdriver-Java。下面是HTML代码片段
<div aria-expanded="false" id="navbar" class="navbar-collapse collapse secondnav">
<ul class="nav navbar-nav">
<!-- <li><a href="#">Forms Grid</a>
</li> -->
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Reports <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#" id="abcd">Choice 1</a></li>
<li><a href="#" id="pqrst">Choice 2</a></li>
<li><a href="#" id="uvwxy">Choice 3</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Admissions <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a id="admit123">Admit new guy </a></li>
<li><a href="enrollExisting">Enroll Existing admit </a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Findings<span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li class="dropdown-submenu"><a tabindex="-1" href="#">Samples</a>
<ul class="dropdown-menu">
<li><a href="#" tabindex="-1">Add</a>
</li>
<li><a href="#" tabindex="-1">Update</a>
</li>
<li><a href="#" tabindex="-1">Update Off Site</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
对于初学者,您可以通过索引获得特定的下拉列表:
List<WebElement> menus = driver.findElements(By.cssSelector("div#navbar ul li.dropdown"));
WebElement desiredMenu = menus.get(0);
desiredMenu.click();
然后,您将有多种方法来定位菜单选项。例如,通过文本:
WebElement choice1 = desiredMenu.findElement(By.linkText("Choice 1"));
choice1.click();