所以我有引用这个 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_selector
和get_attribute()
:print(driver.find_element_by_css_selector("div.rankings-list-volume").get_attribute("innerHTML"))
使用
xpath
和 text 属性:print(driver.find_element_by_xpath("//div[contains(@class, 'rankings-list-volume')]").text)
理想情况下,要打印文本2769.94,您必须诱导WebDriverWait对于 visibility_of_element_located()
,您可以使用以下任一项 Locator Strategies :
使用
CSS_SELECTOR
和get_attribute()
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.rankings-list-volume"))).get_attribute("innerHTML"))
使用
XPATH
和 text 属性: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
结尾
有用文档的链接:
-
get_attribute()
方法获取元素的给定属性。
-
text
属性返回元素的文本。
- Difference between text and innerHTML using Selenium
关于python - Selenium 不会返回文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64021220/