Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium-查找包含任何文本的元素_Python_Selenium_Selenium Webdriver - Fatal编程技术网

Python Selenium-查找包含任何文本的元素

Python Selenium-查找包含任何文本的元素,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我试图处理所有包含文本的元素。我知道我可以迭代列表,只处理包含文本的列表: 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的驱动程序

我试图处理所有包含文本的元素。我知道我可以迭代列表,只处理包含文本的列表:

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的
驱动程序,只查找包含文本的元素。通过
查找元素,而不查找所有元素,然后只过滤包含文本的元素。。。?这里可以使用通配符吗?

您可以使用以下x路径来获取包含文本的所有元素

  • /*[text()]
    ——它将返回包含父节点的文本的所有元素
  • /*[text()][count(*)=0]
    --它返回所有包含纯文本子节点的元素
  • 或者,您可以使用下面的x路径获取不带文本的所有元素

  • /*[非(text())]
    --它将返回所有不带文本的元素,包括父节点
  • /*[not(text())][count(*=0]
    ——它返回所有不带纯文本子节点的元素

  • 您可以使用以下x路径获取包含文本的所有元素

  • /*[text()]
    ——它将返回包含父节点的文本的所有元素
  • /*[text()][count(*)=0]
    --它返回所有包含纯文本子节点的元素
  • 或者,您可以使用下面的x路径获取不带文本的所有元素

  • /*[非(text())]
    --它将返回所有不带文本的元素,包括父节点
  • /*[not(text())][count(*=0]
    ——它返回所有不带纯文本子节点的元素

  • 可以使用XPath的not()函数。您所说的
    仅指那些没有文本的
    是什么意思?你能告诉我们你是怎么做到的吗?我澄清了这个问题。我想过滤掉那些没有文本的事件,只处理那些有文本的事件——任何可以使用XPath的not()函数的文本。您所说的
    仅指那些没有文本的
    是什么意思?你能告诉我们你是怎么做到的吗?我澄清了这个问题。我想过滤掉那些没有文本的事件,只处理那些有文本的事件-任何文本XPath
    /*[text()]
    将返回一些没有文本的元素(那些只有换行符的元素)、有文本但隐藏的元素,以及
    中的所有文本。您可以通过格式化空白并在正文后使用
    html/body//*[text()[normalize-space()]]
    来改进它。XPath
    /*[text()]
    将返回一些没有文本的元素(那些只有换行符的元素)、有文本但隐藏的元素以及
    中的所有文本。您可以通过格式化空白并在正文之后使用
    html/body/*[text()[normalize-space()]
    来改进它。