Python Selenium正在为肯定包含文本的元素返回空文本

Python Selenium正在为肯定包含文本的元素返回空文本,python,selenium,parsing,selenium-webdriver,web-scraping,Python,Selenium,Parsing,Selenium Webdriver,Web Scraping,我在练习如何整理我大学的课程目录。我在Python中有几行代码在Chrome中打开url,然后单击搜索按钮打开课程目录。当我使用find\u elements\u by\u xpath()提取文本时,它返回空白。当我在Chrome上使用开发工具时,肯定有文本 from selenium import webdriver import time driver = webdriver.Chrome() url = 'https://courses.osu.edu/psp/csosuct/EMPLO

我在练习如何整理我大学的课程目录。我在Python中有几行代码在Chrome中打开url,然后单击搜索按钮打开课程目录。当我使用
find\u elements\u by\u xpath()
提取文本时,它返回空白。当我在Chrome上使用开发工具时,肯定有文本

from selenium import webdriver
import time

driver = webdriver.Chrome()
url = 'https://courses.osu.edu/psp/csosuct/EMPLOYEE/PUB/c/COMMUNITY_ACCESS.OSR_CAT_SRCH.GBL?'
driver.get(url)
time.sleep(3)

iframe = driver.find_element_by_id('ptifrmtgtframe')
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//*[@id="OSR_CAT_SRCH_WK_BUTTON1"]')
element.click()
course = driver.find_elements_by_xpath('//*[@id="OSR_CAT_SRCH_OSR_CRSE_HEADER$0"]')
print(course)

我试图从元素“OSU_CAT_SRCH_OSR_CRSE_HEADER”中提取文本。我不明白为什么它不返回文本值,特别是当我可以看到它包含使用dev工具的文本时。

您没有使用
文本
,这就是您没有获取文本的原因

course = driver.find_elements_by_xpath('//*[@id="OSR_CAT_SRCH_OSR_CRSE_HEADER$0"]').text
在最后一行中尝试以上更改

下面是更改后的完整代码

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

driver = webdriver.Chrome()
url = 'https://courses.osu.edu/psp/csosuct/EMPLOYEE/PUB/c/COMMUNITY_ACCESS.OSR_CAT_SRCH.GBL?'
driver.get(url)
time.sleep(3)

iframe = driver.find_element_by_id('ptifrmtgtframe')
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//*[@id="OSR_CAT_SRCH_WK_BUTTON1"]')
element.click()
# wait 10 seconds
course = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="OSR_CAT_SRCH_OSR_CRSE_HEADER$0"]'))
).text
print(course)

你没有等。硒的痛苦之一是它能实时工作。如果站点需要1/2秒来更新页面,那么您需要等待。有一种说法是“等待直到这个元素出现”,但我记不起API的名称了。您是否在另一次延迟中尝试了更多时间?内容好像还没准备好,谢谢!我不得不添加一个额外的“time.sleep()”来允许网站运行,但是添加.text可以让我提取文本我更新了代码,而不是使用time.sleep。如果你的问题解决了,最好使用驱动程序等待,接受答案