当前位置: 首页 > 知识库问答 >
问题:

使用Python和Selenium从span标记获取文本

向嘉誉
2023-03-14

我正在尝试使用Python和Selenium获取此元素。

<h2 class="jobTitle jobTitle-color-purple">
    <span title="Director">Director=</span>
<h2>

这就是我所尝试的:

try:
    title  = job.find_element_by_xpath('.//td[@class="title"]//a').text
except:
    title = job.find_element_by_xpath('.//h2[@class="title"]//a').get_attribute(name="title")

我做错了什么?

no such element: Unable to locate element: {"method":"xpath","selector":".//h2[@class="title"]//a"}

共有2个答案

冷英光
2023-03-14

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

>

  • 使用css_selectorget_attribute(innerHTML)

    print(driver.find_element(By.CSS_SELECTOR, "h2.jobTitle > span[title]").get_attribute("innerHTML"))
    

    使用xpath和文本属性:

    print(driver.find_element(By.XPATH, "//h2[contains(@class, 'jobTitle')]/span[@title]").text)
    

    理想情况下,您需要为位于()的元素的可见性引入WebDriverWait,并且您可以使用以下任一定位器策略:

    >

  • 使用CSS_SELECTOR和text属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "h2.jobTitle > span[title]"))).text)
    

    使用XPATHget\u属性(“innerHTML”)

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//h2[contains(@class, 'jobTitle')]/span[@title]"))).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\u attribute()method获取元素的给定属性或属性

  • 庞鸿骞
    2023-03-14

    您使用的定位器绝对错误
    元素类的h2属性值是jobtile jobtile紫色,而不是title
    子元素标记名是span,而不是a
    请尝试以下操作:

    title  = job.find_element_by_xpath('//h2[@class="jobTitle jobTitle-color-purple"]//span').text
    

    您可能需要在此之前添加等待/延迟,以便在尝试访问该元素之前加载页面。

     类似资料:
    • 我试图从span(图片中的质量)获取文本,但我还没有找到它无法获取文本的原因。 感谢所有的帮助,我正在使用python。 我的代码: 从html:

    • 尝试从span元素获取数字动态文本值。我的测试是数据驱动的,所以每次运行都需要从网页中获取文本(美元金额),然后将其与Excel中的期望值进行比较。由于某种原因,我的代码不起作用。请帮忙解决。 我得HTML: 我的定位器:By PRICE=By.xpath(“//div[@class='PRICE ng-binding'][@ng-hide='calc.iscalculating']/text()

    • 我有以下html片段: 我已经用以下XPath找到了该元素: 谢谢,里亚斯

    • 我想在这里得到这个特定元素内的文本 如何使用python和selenium从“数据剪贴板文本”中获取文本? 我试过了 没有运气

    • 您好,我想得到的值以下的"交联",但我不知道如何做到这一点。 我正在使用Jsoup,下面是我的代码: 这就是我所拥有的: 你有什么想法可以得到价值,而不是“cotation”? 提前谢谢。

    • 我正在尝试使用webdriver从上面的html代码中获取动态跨度文本,但得到的是: org.openqa.selenium.nosuchelementException:找不到元素:{“method”:“id”,“selector”:“MathQ2”} 我需要从span id“MathQ2”获取文本:“6+4=” 此文本“6+4=”在每次刷新页面或加载新页面时都在更改 我尝试过xpath、id、