获得“这是一些”并非易事。例如,返回“ This is some text”:
driver.find_element_by_id('a').text
通常,如何获得特定元素的文本而不包含其子元素的文本?
(我在下面提供了一个答案,但是如果有人想出一个不太丑陋的解决方案,它将让问题悬而未决)。
这是一个常规解决方案:
def get_text_excluding_children(driver, element):
return driver.execute_script("""
return jQuery(arguments[0]).contents().filter(function() {
return this.nodeType == Node.TEXT_NODE;
}).text();
""", element)
传递给函数的元素可以是从find_element...()
方法中获得的东西(即它可以是一个WebElement
对象)。
或者,如果您没有jQuery或不想使用它,则可以用以下代码替换上面函数的主体:
return self.driver.execute_script("""
var parent = arguments[0];
var child = parent.firstChild;
var ret = "";
while(child) {
if (child.nodeType === Node.TEXT_NODE)
ret += child.textContent;
child = child.nextSibling;
}
return ret;
""", element)
我实际上是在测试套件中使用此代码。
(我在下面给出了一个答案,但如果有人能想出一个不那么可怕的解决方案,我会保留这个问题)。
我有以下的html代码,我需要console.log只有航运。尝试了一些方法,但似乎无法奏效。我试着先选择它的孩子,然后打印出它的父母的文本内容-不行...我可以删除它的孩子,打印出剩下的东西,但我做不到。 有什么建议吗? 谢谢你的帮助 我试过这个: 我想得到发货,但我仍然得到图例元素的所有文本内容
问题内容: 的HTML 码 问题答案: 我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。 你叫它
问题内容: 的HTML 码 问题答案: 我已经看到这个问题在过去大约一年左右的时间里弹出了几次,我想尝试编写此函数…所以就到这里了。它接受父元素,并删除每个子元素的textContent,直到剩下的是textNode为止。我已经在您的HTML上对其进行了测试,并且可以正常工作。 你叫它
我正在浏览一个包含几个元素的网页,我想在不包含其子元素的情况下获取其中的文本。 页面结构如下: 当我使用时,得到的结果是: 我正在使用BeautifulSoup4和Python3
问题内容: 我想动态更新元素的文本: 我是jQuery的新手,因此对我来说,这项任务似乎非常具有挑战性。有人可以指出我要使用的功能/选择器吗? 如果可能的话,我想在不为需要更改的文本添加新容器的情况下执行此操作。 问题答案: 在Javascript中,该属性为您提供元素的所有子节点,包括文本节点。 因此,如果您知道要更改的文本始终是元素中的第一件事,那么请给出以下HTML: 您可以这样做: 当然,