为什么 .text 总是空的?

Why is .text always empty?

我试过使用 getText() Referencing,但是当我使用该方法时,我总是收到错误 "WebElement object has no attribute getText()"。我通过 YouTube 视频找到了 .text,但我也没有从中获得结果。有什么想法吗?

from selenium import webdriver

driverPath = 'C:\Program Files (x86)\chromedriver.exe'
driver = webdriver.Chrome(driverPath)


driver.implicitly_wait(20)
driver.get ('https://shop.pricechopper.com/search?search_term=lettuce')

pageSource = driver.page_source

search = driver.find_elements_by_class_name ("css-dr3s47")
print (search[0].text)



driver.quit()

您正在将 Selenium 与 Python 一起使用,因此正确的方法是 .text

.getText() 用于 Selenium-Java 绑定.

你得到 null 的原因是元素没有正确呈现,而你试图与它们交互导致 null。

请使用 显式等待time.sleep() 最坏情况来解决此问题。

此外,还有一个弹出窗口 window,我们必须单击关闭 Web 元素,以便 css-dr3s47 可用于 Selenium 视图端口。

代码:

driver = webdriver.Chrome(driver_path)
driver.maximize_window()
driver.implicitly_wait(30)
wait = WebDriverWait(driver, 30)
driver.get("https://shop.pricechopper.com/search?search_term=lettuce")
try:
    wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@ng-click='processModalCloseClick()']"))).click()
    print('Clicked on modal pop up closer button')
except:
    pass

search = driver.find_elements_by_class_name ("css-dr3s47")
print (search[0].text)

进口:

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

getText returns 呈现大小大于 0 * 0 的元素,因此如果元素未显示或大小为零,则它不会 return 任何内容。

您可以做的两件事是:

  1. 在获取文本之前滚动到元素
 Actions actionProvider = new Actions(driver);
  // Performs mouse move action onto the element
  actionProvider.moveToElement(search[0]).build().perform();
  print(search[0].text)
  1. 使用文本内容

文本内容不检查显示或大小,它只提供内容

    print(search[0].get_attribute("textContent"))