Java 当存在href的数据时,li元素的href属性将显示为null

Java 当存在href的数据时,li元素的href属性将显示为null,java,html,selenium-webdriver,Java,Html,Selenium Webdriver,我试图在一个有序列表中迭代li元素的集合,然后打印每个元素的URL HTML: <div id="global-atoz-navigation"> <nav role="navigation" aria-label="Suppliers"> <ol> <li class="selected"> <span class="visuallyhidden">Suppliers sta

我试图在一个有序列表中迭代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>

  • 供应商从 A
  • 供应商从
  • 供应商从
  • 到目前为止,我的代码是:

    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"));
    
    }
    
    WebElement navDiv=driver.findElement(By.id(“全局atoz导航”);
    列表链接=navDiv.findElements(按.tagName(“li”));
    用于(WebElement链接:链接){
    System.out.println(link.getAttribute(“href”);
    }
    

    但出于某种原因,这会为每个li元素打印“null”。你知道为什么吗?

    你的
  • 元素没有
    href
    属性。它们内部的
    元素可以。您有没有理由不使用
    navDiv.findElements(按.tagName(“a”))
    来查找它们?或者,如果可能存在要避免的锚定,则获取所有锚定并过滤掉不好的锚定,或者获取所有列表项并对每个锚定执行另一个
    li.findElements(按.tagName(“a”))

    请注意,
  • 不是“链接”的缩写。它是“列表项”的缩写


    链接位于“锚定”元素中。

    您的
  • 元素没有
    href
    属性。它们内部的
    元素可以。您有没有理由不使用
    navDiv.findElements(按.tagName(“a”))
    来查找它们?或者,如果可能存在要避免的锚定,则获取所有锚定并过滤掉不好的锚定,或者获取所有列表项并对每个锚定执行另一个
    li.findElements(按.tagName(“a”))

    请注意,
  • 不是“链接”的缩写。它是“列表项”的缩写


    链接位于“锚定”或元素中。

    参考此处的答案:

    “您没有将其类型转换为字符串。
    request.getAttribute()
    将返回一个对象。”

    尝试使用此选项,看看是否有效:

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

    同样正确的是ErikE的答案,您应该从这里的答案中获取标记的属性,而不是
  • 标记的属性:

    “您没有将其类型转换为字符串。
    request.getAttribute()
    将返回一个对象。”

    尝试使用此选项,看看是否有效:

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

    同样正确的是ErikE的答案,即您应该获取
    标签的属性而不是
  • 标签的属性,这可能是因为没有
    li
    标签具有
    href
    属性?可能是因为没有
    li
    标签具有
    href
    属性?谢谢,将其更改为查找元素而不是列表项。啊!谢谢,将其更改为查找元素而不是列表项。啊!