【问题标题】:Unable to print the text using Python Selenium?无法使用 Python Selenium 打印文本?
【发布时间】:2020-12-22 21:31:32
【问题描述】:

所以我想通过 XPath 从这个 HTML 中打印出“ou”。

<div class="syllable">ou</div>

这是我的代码:

elem = driver.find_elements_by_xpath('*my xpath*')
for my_elem in elem:
    print(my_elem.text)

我在这段代码中使用了.text,但它在运行时什么也没有打印出来。它应该打印ou,但它什么也没打印。如果有人可以告诉我我做错了什么,那就太好了。

【问题讨论】:

  • 你的 xpath 可能没有得到你真正认为你得到的东西
  • 呃,我们应该猜猜你的 xpath 是什么?
  • 请改进您的问题并向我们展示更多您的代码。这将有助于我们重现您的问题。谢谢

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

要打印 文本 ou,您可以使用以下任一 Locator Strategies

  • 使用css_selectorget_attribute("innerHTML")

    print(driver.find_element_by_css_selector("div.syllable").get_attribute("innerHTML"))
    
  • 使用xpathtext属性:

    print(driver.find_element_by_xpath("//div[@class='syllable']").text)
    

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

  • 使用CSS_SELECTORtext属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.syllable"))).text)
    
  • 使用XPATHget_attribute()

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='syllable']"))).get_attribute("innerHTML"))
    
  • 控制台输出:

    ou
    
  • 注意:您必须添加以下导入:

    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】:

    如果您无法使用 .text 打印文本 然后使用 .get_attribute("innerHTML") 这将毫无疑问地打印出文本。

    例如。 你的代码应该是这样的

        elem = driver.find_elements_by_xpath('*my xpath*').get_attribute("innerHTML")
    
        for my_elem in elem:
        print(my_elem)
    

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 2022-01-21
      • 2021-06-12
      相关资源
      最近更新 更多