Selenium Python:如何获取标签中所有字符串的列表

Selenium Python: how to get a list of all strings in a tag

我正在尝试使用此 Xpath 在以下 html 中获取文本 ("Get this text")"//span[@id='myanswer']/text()[7]"。当我将它放在检查 html 部分的 cntrl+F 字段中时,它会在网站上找到文本,但是当我尝试在我的 python 代码中打印输出时,它 returns 没有什么。也做类似

的事情

driver.find_element(By.XPATH,"//span[@id='myanswer']").text,

也returns没什么。所以我在想也许将所有这些字符串附加到一个列表中并打印该列表的最后一个元素?有没有办法打印出最后一个字符串?

<span id="myanswer">
    <br>
    <br> 
    " [&nbsp;"
    <b>tU</b>
    " method Response ]"
    <br>
    "&nbsp;"
    <span class="text-success"><i class="fa  fa-angle-double-right"></i></span>  
    <strong></strong> 
    "&nbsp;" 
    <span class="text-secondary"><i>string</i></span> 
    <b>:</b> 
    "
    &nbsp;Get this text"
    <br>
    <br>
</span>

So I'm thinking maybe appending all those strings into a list and printing the last element of that list

  • 这是处理这个文本节点的好方法之一。

如果

driver.find_element(By.XPATH,"//span[@id='myanswer']").text

没有return任何东西那么可能有多种原因:

1.

//span[@id='myanswer'] is not unique in HTMLDOM. 

检查唯一性的步骤:

Press F12 in Chrome -> 转到 element 部分 -> 执行 CTRL + F -> 然后粘贴 xpath 并查看是否需要 element正在 突出显示 1/1 匹配节点。

  1. 也许你错过了延迟,请休眠或使用如下所示的 Explicitwait:

    WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@id='myanswer']"))).get_attribute('innerText')
    

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC