如何在Selenium WebDriver中选择li里面的锚标签?

时间:2014-01-03 09:54:20

标签: java selenium-webdriver

以下是我的代码。我想点击<a>内的锚标记<li>。我试图使用By.tagName("//li/a")获取值。我没有得到任何数据。

我的HTML中有许多带class="dropdown-menu"的列表。我应该能够选择一个列表,从中单击下拉值。

<ul class="dropdown-menu" style="position: static; margin-bottom: 5px; *width: 50px;border-style: none;min-width: 45px;box-shadow: 0 0px;text-align: center;" aria-labelledby="dropdownMenu" role="menu">
  <li><a class="dropdown-add" style="cursor: pointer;">1</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">2</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">3</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">4</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">5</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">6</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">7</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">8</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">9</a></li>
  <li><a class="dropdown-add" style="cursor: pointer;">10</a></li>
</ul>

2 个答案:

答案 0 :(得分:4)

很容易获得所有锚点的列表,只需使用CSS选择器

List<WebElement> anchors = webDriver.findElement(By.cssSelector("ul li a"));

然后选择你要点击的任何锚,让我们说

anchors.findElement(By.linkText("10")).click();

答案 1 :(得分:-1)

首先获取锚点的NodeList:

var res = document.querySelectorAll('ul.dropdown-menu li a.dropdown-add');

然后在第3个强制click,如果它不为空:

if(res[2].childNodes[0].nodeValue.length) { res[2].click() };