我正在尝试处理所有包含文本的元素。我知道我可以迭代列表并只处理包含文本的那些:
from selenium import webdriver
driver = webdriver.Chrome()
my_elelements = driver.find_elements_by_xpath("//*")
for elm in my_elements:
if elm.text!=""
'processing of text
但有没有更快的方法只找到带有文字的元素,而selenium的driver.find_elements_by_
没有找到所有元素,然后只过滤那些带文字的元素......?是否有可以在这里使用的通配符?
答案 0 :(得分:2)
您可以使用以下x路径获取包含文本的所有元素。
//*[text()]
- 它将返回包含父节点//*[text()][count(*)=0]
- 它返回所有仅包含文本子节点的元素或者您可以使用以下x路径来获取没有文本的所有元素。
//*[not(text())]
- 它将返回没有包含父节点的文本的所有元素//*[not(text())][count(*)=0]
- 它返回所有没有纯文本子节点的元素