python - Selenium 不会返回文本

标签 python selenium xpath css-selectors webdriverwait

所以我有引用这个 html 类的代码:

<div class="text-right _2jRRJJvarKXJGP9oRP-Bv0 pbBzNArud8-t5yrNZi8Wg rankings-list-volume">2775.60</div> 
Vol = driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[2]/div[1]/div/div[2]/div/main/div/div/div[2]/a[1]/div[8]').text
print(Vol)

如果我在没有 .text 的情况下运行它,它只返回元素名称等,所以我知道它正在查找元素,但它不会返回文本。 HTML 中的 2775.60 值是它应该返回的值,但它只是不打印任何内容。

最佳答案

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

  • 使用 css_selectorget_attribute():

    print(driver.find_element_by_css_selector("div.rankings-list-volume").get_attribute("innerHTML"))
    
  • 使用 xpathtext 属性:

    print(driver.find_element_by_xpath("//div[contains(@class, 'rankings-list-volume')]").text)
    

理想情况下,要打印文本2769.94,您必须诱导WebDriverWait对于 visibility_of_element_located(),您可以使用以下任一项 Locator Strategies :

  • 使用 CSS_SELECTORget_attribute():

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.rankings-list-volume"))).get_attribute("innerHTML"))
    
  • 使用 XPATHtext 属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[contains(@class, 'rankings-list-volume')]"))).text)
    
  • 注意:您必须添加以下导入:

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

You can find a relevant discussion in How to retrieve the text of a WebElement using Selenium - Python


结尾

有用文档的链接:

关于python - Selenium 不会返回文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64021220/

相关文章:

python - Selenium Python 从 HTTP 请求中获取数据

python - 同一行中表格单元格的 XPath?

xml - 如何选择不同层次的多个节点?

Python XPath 结果仅显示 []

python - Selenium 更改语言浏览器 Chrome/Firefox

selenium - 当使用 Selenium 和 Java 可以找到任何一个元素时如何选择一个元素

python ctypes C++ 取回 char* 在 linux 上缺少最后一个字符

python - Django DateTimeField 与 datetime.now() 进行比较

python - 使用 while 的等待函数

python - 使用 sqlalchemy 核心的 MySQL 多表更新查询?