【问题标题】:How to extract text between ::before and ::after如何在 ::before 和 ::after 之间提取文本
【发布时间】:2022-01-05 16:20:19
【问题描述】:

我想将 ::before 和 ::after 之间的文本提取成一个字符串。如何使用 for 循环提取 selenium Python 中的所有文本?

【问题讨论】:

    标签: python selenium selenium-chromedriver pseudo-element


    【解决方案1】:

    文本 i 位于 ::before::after pseudoelements 之间。因此,要提取文本,您可以使用以下任一Locator Strategies

    • 使用css_selector

      print(driver.find_element(By.CSS_SELECTOR, "div.kbkey.button.red").text)
      
    • 使用xpath

      print(driver.find_element(By.XPATH, "//div[@class='kbkey button red']").text)
      

    理想情况下,您需要为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用CSS-SELECTOR

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.kbkey.button.red"))).text)
      
    • 使用XPATH

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='kbkey button red']"))).text)
      
    • 注意:您必须添加以下导入:

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

    您可以在How to retrieve the text of a WebElement using Selenium - Python找到相关讨论


    参考文献

    链接到有用的文档:

    【讨论】:

      【解决方案2】:

      ::before::after 只是一个伪元素。
      在这里,您可以从 div 元素本身中提取文本。
      如果有多个 divs 类 kbkey button red 你可以这样做:

      buttons = driver.find_elements_by_css_selector("div.kbkey.button.red")
      for button in buttons:
          print(button.text)
      

      【讨论】:

        猜你喜欢
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        • 2021-05-21
        • 1970-01-01
        • 2021-05-07
        • 2023-01-22
        • 2013-01-28
        • 2012-12-21
        相关资源
        最近更新 更多