<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>
&#13;
我必须从屏幕的上述部分信息部分获取文本。
我尝试getText()
并返回空白行,尝试getAttribute("innerText")
并返回N / A,尝试getAttribute("innerHTML")
并返回N / A
我不确定如何获得完整的文字或单个测试,例如部分名称 应该返回文本Section&#34; RR&#34;我正在使用的Xpath是正确的。 任何帮助都非常感谢。 Fyi,我正在使用下面的Xpath来获取文本。
//div[@id = 'TestView5']//span[@id = 'lblSectionInfo']
我的Xpath是正确的,因为我可以在Selenium IDE使用它时突出显示本节的完整文本。
答案 0 :(得分:1)
分离这些字段非常困难,因为它们位于同一个span节点下。我可以看到两个解决方法
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;
}