如何在 Python 中使用 Selenium WebDriver 获取文本

2025-01-08 08:50:00
admin
原创
108
摘要:问题描述:我正在尝试使用 Selenium WebDriver 获取文本,这是我的代码。请注意,我不想使用 XPath,因为在我的例子中,每次重新启动网页时 ID 都会发生变化。我的代码:text = driver.find_element_by_class_name("current-stage&...

问题描述:

我正在尝试使用 Selenium WebDriver 获取文本,这是我的代码。请注意,我不想使用 XPath,因为在我的例子中,每次重新启动网页时 ID 都会发生变化。

我的代码:

text = driver.find_element_by_class_name("current-stage").getText("my text")

HTML:

<span class="current-text" id="yui_3_7_0_4_1389185744113_384">my text</span>

我该如何修复此问题?


解决方案 1:

你想要的只是.text

获得它之后您就可以验证它,不要尝试传递您期望它应该具有的内容。

解决方案 2:

Python

element.text

Java

element.getText()

代码#

element.Text

红宝石

element.text

解决方案 3:

要打印文本,my text您可以使用以下任一定位器策略:

  • 使用class_nameget_attribute("textContent")

print(driver.find_element(By.CLASS_NAME, "current-stage").get_attribute("textContent"))
  • 使用css_selectorget_attribute("innerHTML")

print(driver.find_element(By.CSS_SELECTOR, "span.current-stage").get_attribute("innerHTML"))
  • 使用xpathtext属性:

print(driver.find_element(By.XPATH, "//span[@class='current-stage']").text)

理想情况下,您需要诱导WebDriverWait,visibility_of_element_located()并且可以使用以下任一定位器策略:

  • 使用CLASS_NAMEget_attribute("textContent")

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, "current-stage"))).get_attribute("textContent"))
  • 使用CSS_SELECTOR文本属性:

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.current-stage"))).text)
  • 使用XPATHget_attribute("innerHTML")

print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@class='current-stage']"))).get_attribute("innerHTML"))
  • 注意:您必须添加以下导入:

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

您可以在如何使用 Selenium - Python 检索 WebElement 的文本中找到相关讨论


参考

有用文档的链接:

  • get_attribute()方法Gets the given attribute or property of the element.

  • text属性返回The text of the element.

  • 使用 Selenium 时文本和 innerHTML 之间的区别

解决方案 4:

答案是:

driver.find_element_by_class_name("ctsymbol").text

解决方案 5:

您可以使用:

element = driver.find_element_by_class_name("class_name").text

这将返回元素内的文本并允许您随后验证它。

解决方案 6:

这是正确答案。成功了!!

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome("E:\\Python\\selenium\\webdriver\\chromedriver.exe")
driver.get("https://www.tatacliq.com/global-desi-navy-embroidered-kurta/p-mp000000000876745")
driver.set_page_load_timeout(45)
driver.maximize_window()
driver.implicitly_wait(2)
driver.get_screenshot_as_file("E:\\Python\\Tatacliq.png")
print ("Executed Successfully")
driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").click()
SpecialPrice = driver.find_element_by_xpath("//div[@class='pdp-promo-title pdp-title']").text
print(SpecialPrice)

解决方案 7:

在 Selenium 4 更新后,任何发现此主题的人都应注意。driver.find_element_by_* 已被弃用,使用它将给出“弃用警告”。替换方法是:driver.find_element(By.X,"name")请查找 Selenium 4 信息。

解决方案 8:

当无法在自定义类中获取某些内容或者更改 id 时,我发现这绝对是无价的:

driver.find_element_by_xpath("//*[contains(text(), 'Show Next Date Available')]").click()
driver.find_element_by_xpath("//*[contains(text(), 'Show Next Date Available')]").text
driver.find_element_by_xpath("//*[contains(text(), 'Available')]").text
driver.find_element_by_xpath("//*[contains(text(), 'Avail')]").text

解决方案 9:

从元素中获取文本:

url=driv.find_element(By.whatDoYouWant, "ClassNameOrwhatDoYouWant").text
print(url)

前任:

url = web.find_element(By.TAG_NAME, "a").text
print(url)

从元素中获取文本:

前任:

for i in range(6):
    var = web.find_elements(By.TAG_NAME, "input")[i].text
    print(var)
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2545  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1551  
  建筑工程全生命周期涉及从项目规划、设计、施工到运营维护等多个复杂阶段,每个阶段都产生和依赖大量信息。PLM(产品生命周期管理)系统作为一种整合数据、流程和人员的数字化解决方案,正逐渐成为建筑行业实现高效协同与可持续发展的关键支撑。通过数字化转型,PLM系统能够优化各阶段的工作流程,提升项目整体质量和效率,为建筑工程的全...
plm是什么软件   1  
  产品生命周期管理(PLM)系统在企业资源成本率优化方面发挥着至关重要的作用。通过构建有效的数据模型,PLM系统能够整合企业各个环节的数据,为资源成本的精准分析和优化提供有力支持。这不仅有助于企业降低成本,还能提升产品质量和市场竞争力。PLM系统概述PLM系统是一种用于管理产品从概念设计到退役全生命周期过程中所有信息和流...
PLM项目管理软件   1  
  产品生命周期管理(PLM)系统在现代企业的产品研发、生产与管理过程中扮演着至关重要的角色。它整合了从产品概念设计到产品退役的全生命周期数据与流程,助力企业提升效率、降低成本并增强创新能力。随着技术的不断发展,到 2025 年,PLM 系统将具备一系列核心功能模块,这些模块将深度影响企业的运营与发展。产品数据管理模块产品...
plm是什么意思   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用