当存在href的数据时,li元素的href属性变为null

问题描述 投票:0回答:2

我试图在有序列表中迭代li元素的集合,然后从每个元素打印URL。

HTML:

<div id="global-atoz-navigation">
  <nav role="navigation" aria-label="Suppliers">
    <ol>


          <li class="selected">
            <span class="visuallyhidden">Suppliers starting with </span>
            <strong>A</strong>
          </li>



          <li>
            <span class="visuallyhidden">Suppliers starting with </span>
            <a href="/g-cloud/suppliers?prefix=B">B</a>
          </li>



          <li>
            <span class="visuallyhidden">Suppliers starting with </span>
            <a href="/g-cloud/suppliers?prefix=C">C</a>
          </li>
</ol>
</nav>
</div>

我的代码到目前为止:

WebElement navDiv = driver.findElement(By.id("global-atoz-navigation"));
List<WebElement> links = navDiv.findElements(By.tagName("li"));
for (WebElement link : links) {
    System.out.println(link.getAttribute("href"));

}

但由于某种原因,这是为每个li元素打印'null'。有什么想法吗?

java html selenium-webdriver
2个回答
2
投票

你的<li>元素没有href属性。里面的<a>元素。有没有理由你不会做navDiv.findElements(By.tagName("a"))找到那些?或者,如果可能存在您想要避免的锚点,要么获取所有锚点并过滤掉坏的锚点,要么获取所有列表项目并在每个上执行另一个li.findElements(By.tagName("a"))

请注意,<li>不是“link”的缩写。它是“列表项”的缩写。

链接在“锚”或<a>元素中。


0
投票

参考答案:

JSP getAttribute() returning null

“你没有将它类型化为String.request.getAttribute()将返回一个Object。”

尝试使用它,看看它是否有效:

String value = (String)link.getAttribute("href");

同样正确的是ErikE的答案,你应该抓住<a>标签的属性而不是<li>标签

© www.soinside.com 2019 - 2024. All rights reserved.