富硒过滤器

2024-04-29 07:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从匹配特定字体的“p”元素中检索所有文本。你知道吗

<p>
Hello there <i> mate </i> !
</p>

所以,这里,我只想说“你好!”而不是“伴侣”。我已经知道“Hello there”的字体(整个css属性)。你知道吗

我现在的代码是:

for elem in br.find_elements_by_tag_name('p'):
  if elem.value_of_css_property('font') == stored_font:
    snippets.append(elem.text)

但这也给了我所有的斜体字。如何在“p”的所有子级上递归,只得到与存储的字体匹配的文本?你知道吗


Tags: 代码in文本br元素hellofor属性
3条回答

我对编写过滤这些东西以满足测试需要的解决方案有疑问。 我会用'mate'断言所有文本或使用text.contains("Hello there")

在这里使用set.difference()似乎是合适的,假设您的元素是唯一的:

p_tags = set(br.find_elements_by_tag_name('p'))
i_tags = set(br.find_elements_by_tag_name('i'))
p_tags_without_i_tags = p_tags.difference(i_tags)

for elem in br.find_elements_by_tag_name('p'):
  if elem.value_of_css_property('font') == stored_font:
    snippets.append(elem.text)

我们可以通过javascript获取TextNode的文本内容:

script = 'return arguments[0].firstChild.textContent + arguments[0].lastChild.textContent;';

for elem in br.find_elements_by_tag_name('p'):
  if elem.value_of_css_property('font') == stored_font:
    print driver.execute_script(script, elem);

相关问题 更多 >