<p>好的,最后我用python编写了两个方法。一个仅获取父文本内容(不包括子文本),另一个基于文本节点位置获取内容。你知道吗</p>
<p>注意:如果要在其他语言中使用这些方法,请确保根据您的语言更新<code>driver.execute_script</code>和'strip()`。(使用strip()修剪返回值)。你知道吗</p>
<p><strong>方法1:获取\u文本\u排除\u子元素(element)</strong></p>
<p>#参数-元素</p>
<p>#return-仅元素文本(不包括子文本)</p>
<pre><code>def get_text_exclude_children(element):
return driver.execute_script(
"""
var parent = arguments[0];
var child = parent.firstChild;
var textValue = "";
while(child) {
if (child.nodeType === Node.TEXT_NODE)
textValue += child.textContent;
child = child.nextSibling;
}
return textValue;""",
element).strip()
</code></pre>
<p><strong>方法2:通过位置(元素,textposition)从父级获取文本</p>
<p>#参数-元素</p>
<p>#参数-textposition(从1开始,指定要返回的文本节点的索引)</p>
<p>#return—在位置处指定的父文本</p>
<pre><code>def get_text_from_parent_by_position(element,textPosition=1):
return driver.execute_script(
""" var parent = arguments[0];
var textPosition = arguments[1];
var txtPosition = 0;
var child = parent.firstChild;
var textValue="";
while(child) {
if (child.nodeType === 3){
if (txtPosition===(textPosition-1)){
textValue = child.textContent;
break;
}}else{txtPosition+=1;}
child = child.nextSibling;
}
return textValue;""",
element,textPosition).strip()
</code></pre>
<h2>如何使用这些方法</h2>
<pre><code>myList = elementList[0].find_elements_by_xpath("/some/xpath")
listElement = myList[0]
onlyParentText = get_text_exclude_children(listElement)
onlyFirstTextNode = get_text_from_parent_by_position(listElement,1)
print("only parent text: " + onlyParentText)
print("First TextNode text: " + onlyFirstTextNode)
</code></pre>