Selenium Python -捕获包含特定文本的li元素

wbgh16ku  于 2023-06-06  发布在  Python
关注(0)|答案(1)|浏览(301)

我正在尝试从网页中提取urlToBeCaptured和要捕获的文本。结构如下所示:

  1. <li>
  2. " text with trailing spaces "
  3. <a href="urlToBeCaptured">
  4. <span class ="class1> Text to be captured </span>
  5. <span class ="class2> Another text </span>
  6. </a>
  7. ...
  8. </li>

我正在做以下工作,但似乎不起作用:

  1. el = driver.find_element(By.XPATH, "//li[contains(text(),'text with trailing spaces')]")

一旦我找到了如何从class1中提取文本的元素,它应该是这样的吗?

  1. textToBeCaptured = el.find_element(By.CLASS_NAME, 'class1').text
dba5bblo

dba5bblo1#

给定HTML:

  1. <li>
  2. text with trailing spaces
  3. <a href="urlToBeCaptured">
  4. <span class ="class1"> Text to be captured </span>
  5. <span class ="class2"> Another text </span>
  6. </a>
  7. </li>

要定位带有text ”text with trailing spaces“ 的节点,然后它是带有class ="class1"的后代<span>,您可以使用以下locator strategies之一:

  • 使用 XPATHcontains()
  1. print(driver.find_element(By.XPATH, "//li[contains(., 'text with trailing spaces')]/a//span[@class='class1']").text)
  1. print(driver.find_element(By.XPATH, "//li[contains(normalize-space(),'text with trailing spaces')]/a//span[@class='class1']").text)

*注意:需要添加以下导入:

  1. from selenium.webdriver.common.by import By
展开查看全部

相关问题