如何从xhtml中获取文本

How to get text from xhtml

<div>
  <fieldset>
    <legend class="lheader">Section Information:</legend>
    <span id="lblSectionInfo">
        Name:
        <font style="font-weight:normal">rr</font>
        <br>
        Type:
        <font style="font-weight:normal">Section Type     </font>
        Section List:
        <font style="font-weight:normal"> Yes       </font>
        Status:
        <font style="font-weight:normal">
        Section:
        <font style="font-weight:normal">Section Condition</font>
        <br>
    </span>
  </fieldset>
</div>

我必须从屏幕的上述“部分信息”部分获取文本。 我尝试了 getText() 并且它 return 是空白行,尝试了 getAttribute("innerText") 并且它 return 是 N/A,尝试了 getAttribute("innerHTML") 并且它是 returns N/A

不确定如何获得完整的文本或单独的测试,例如栏目名称 should return text Section "RR" 等。我使用的 Xpath 是正确的。 非常感谢任何帮助。 仅供参考,我正在使用下面的 Xpath 获取文本。

//div[@id = 'TestView5']//span[@id = 'lblSectionInfo']

我的 Xpath 是正确的,因为我可以在 Selenium 使用它时突出显示此部分的完整文本 IDE。

很难将这些字段分开,因为它们在同一个跨度节点下。我可以看到两个解决方法。
1.使用<font>节点的索引作为锚点。

Name: "//span[@id='lblSectionInfo']/font[1]"
Type: "//span[@id='lblSectionInfo']/font[2]"
Section List: "//span[@id='lblSectionInfo']/font[3]"


2.使用JavaScript查找文本节点获取字段名,然后使用Selenium查找<font>节点获取它们的值。最后,将它们映射到一起。

function getTextNode(rootNode) {
    var nodes = rootNode.childNodes;
    var fieldNames = [];
    var count=0;
    for (var i = 0; i < nodes.length; i++) {
        if ((nodes[i].nodeType == Node.TEXT_NODE)) {
            if(nodes[i].textContent.trim().indexOf(':')>0) {
                let text = nodes[i].textContent.trim();
                fieldNames[count] = text.substring(0,text.length-1);
            }           
        }
    }
    return fieldNames;
}