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

rsaldnfx  于 2022-11-24  发布在  Python
关注(0)|答案(8)|浏览(226)

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

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

于飞:

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

我该如何解决这个问题?

hc8w905p

hc8w905p1#

你只要.text
然后你可以在你得到它之后验证它,不要试图传递你所期望的。

4dbbbstv

4dbbbstv2#

"巨蟒"

element.text

** java **

element.getText()

C语言#

element.Text

Ruby

element.text
hzbexzde

hzbexzde3#

若要打印文字 * my text *,您可以使用下列其中一种“定位器策略”:

  • 使用 * 类别名称 * 和get_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(),并且可以使用以下定位器策略之一:

  • 使用 * 类别名称 * 和get_attribute("textContent")
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CLASS_NAME, "current-stage"))).get_attribute("textContent"))
  • 使用 CSS_SELECTORtext 属性:
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的文本中找到相关讨论

参考

有用文档的链接:

  • 方法
  • text属性返回The text of the element.
  • 使用Selenium的文本和innerHTML之间的区别
5tmbdcev

5tmbdcev4#

答案是:

driver.find_element_by_class_name("ctsymbol").text
dhxwm5r4

dhxwm5r45#

您可以用途:

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

这将返回元素中的文本,并允许您在此之后对其进行验证。

dsekswqp

dsekswqp6#

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

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)
bwitn5fc

bwitn5fc7#

提醒在Selenium 4更新后发现此线程的任何人。driver.find_element_by_* 已被弃用,使用它将给予“弃用警告”。替换方法是:驱动程序.find_element(By.X,“名称”)请查找Selenium 4信息。

bn31dyow

bn31dyow8#

我发现当无法在自定义类中获取内容或更改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

相关问题