【问题标题】:Text from a Webelement (Selenium + Python)来自 Webelement 的文本(Selenium + Python)
【发布时间】:2021-09-18 11:21:08
【问题描述】:

我的情况很简单,我只想从下面的 html 中获取文本:

<yt-formatted-string id="text" title="" class="style-scope ytd-channel-name">Rayra Fortunato</yt-formatted-string>

我正在使用 Python + Selenium,但我无法从中检索“Rayra Fortunato”作为字符串。

这是我的代码不能正常工作。

realName = driver.find_element_by_xpath("//yt-formatted-string[contains(text(),'Rayra Fortunato')]")
realName = realName.get_attribute('text')
print(realName)

realName = driver.find_element_by_xpath("//yt-formatted-string[contains(text(),'Rayra Fortunato')]")
realName = realName.text
print(realName)

有什么帮助吗?

谢谢!

【问题讨论】:

  • Rayra Fortunato 是预期输出吗?'
  • 有什么错误吗?

标签: python html selenium selenium-webdriver xpath


【解决方案1】:

您可能还需要显式等待,但您的定位器似乎是正确的。

代码:

wait = WebDriverWait(driver, 10)
print(wait.until(EC.element_to_be_clickable((By.XPATH, "//yt-formatted-string[contains(text(),'Rayra Fortunato')]"))).text)

进口:

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

【讨论】:

    【解决方案2】:

    您可以尝试许多可能的变化。 其中:

    locator = driver.find_element_by_xpath('//yt-formatted-string[@id="text"]')
    real_name = locator.text
    

    或者

    locator = driver.find_element_by_css_selector("text")
    real_name = locator.text
    

    或者:

    locator = driver.find_element_by_xpath('//yt-formatted-string[@id="text"]')
    real_name = locator.get_attribute("innerHTML")
    

    (与 css_selector 的方法相同)。

    但是,这应该适用于这个小 html。您正在查看的真实 HTML 可能要复杂得多,并且上述解决方案可能不起作用。 如果是真的,请检查以下内容:

    • 定位器不在 iframe 中
    • 定位器不在影子 DOM 中
    • 在您尝试获取文本之前页面已完全加载
    • 定位器是独一无二的(从您的问题中很难说)。

    此列表可能更长。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-09
      • 2019-08-09
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多