首页 > 解决方案 > 如何使用 Selenium 从一个 div 获取两个 span 的文本字段?

问题描述

我有这样的html:

<div class="event__scores fontBold">
    <span>1</span>
    &nbsp;-&nbsp;
    <span>2</span>
</div>

我发现这个元素如下:

current_score = match.find_element(By.XPATH, '//div[contains(@class, "event__scores")]')
print(current_score.get_attribute('innerHTML'))

1 - 2如果不使用 bs4 或类似的东西,我无法理解我需要做什么才能获得类似的文本。我知道我可以像这样使用 bs4:

spans = soup.find_all('span')
result = ' - '.join([e.get_text() for e in spans])

但我想知道我能否仅使用 Selenium 获得类似的结果。

标签: python-3.xselenium-webdriver

解决方案


  1. 考虑使用显式等待,而不是find因为在您尝试查找元素时可能尚未加载元素。查看How to use Selenium to test web applications using AJAX 技术文章了解更多详情

    current_score = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, '//div[contains(@class, "event__scores")]')))
    
  2. 您正在寻找错误的属性,您应该使用innerText,而不是innerHTML

    print(current_score.get_attribute('innerText'))    
    

    或者只是检索WebElement.text属性

    print(current_score.text)
    

推荐阅读