【问题标题】:How to select the anchor tag which is inside the li in Selenium WebDriver?如何选择 Selenium WebDriver 中 li 内的锚标记?
【发布时间】:2014-01-03 09:54:20
【问题描述】:

下面是我的代码。我想单击位于<li> 内的锚标记<a>。我尝试使用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>

【问题讨论】:

  • 显示您尝试过的内容。你是什​​么意思“锚标签之间”?锚标记之间没有其他元素。
  • 锚标签之间有什么元素?你是说锚文本吗?
  • 我尝试了以下代码来单击元素:List drop = button.findElements(By.tagName("//li/a")); for(int i=1; i
  • 请将代码更新到您的问题中,这样更容易阅读。

标签: java selenium-webdriver


【解决方案1】:

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

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

然后选择你想点击的任何锚点,比如说

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

【讨论】:

    【解决方案2】:

    首先获取anchors的NodeList:

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

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

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

    【讨论】:

    • OP 弄错了问题,这与 JavaScript 无关。
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2015-02-21
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多