You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Selenium中获取悬停文本?附场景示例与代码问题

解决Agoda页面悬停文本获取失败的问题

问题原因

原代码直接查找CapacityTooltipBody-item元素,但该元素属于悬停触发的tooltip组件,默认处于隐藏未渲染状态,只有当鼠标悬停在对应房型的图片/区域上时才会显示,因此直接查找会返回空列表。

解决方案

需要先模拟鼠标悬停触发tooltip显示,再获取目标文本,具体步骤如下:

  • 定位到触发tooltip的房型元素
  • 用ActionChains模拟鼠标悬停动作
  • 用显式等待确保tooltip加载完成后提取文本

修改后的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
        
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
options = webdriver.FirefoxOptions()
options.add_argument(f"--user-agent={user_agent}")
driver = webdriver.Firefox(options=options)
wait = WebDriverWait(driver, 20)

try:
    driver.get("https://www.agoda.com/sudima-lake-rotorua-hotel/hotel/rotorua-nz.html?finalPriceView=1&isShowMobileAppPrice=false&cid=-1&numberOfBedrooms=&familyMode=false&adults=2&children=0&rooms=1&maxRooms=0&checkIn=2022-12-4&isCalendarCallout=false&childAges=&numberOfGuest=0&missingChildAges=false&travellerType=-1&showReviewSubmissionEntry=false&currencyCode=USD&isFreeOccSearch=false&isCityHaveAsq=false&tspTypes=2&los=6&searchrequestid=556b0085-60c1-4ea4-aed1-9783838b9351")
    driver.set_window_size(1920, 1080)

    # 等待第一个房型元素加载完成(可根据需求切换为其他房型)
    trigger_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, 'div.PropertyCardImageContainer')))
    
    # 模拟鼠标悬停触发tooltip
    ActionChains(driver).move_to_element(trigger_element).perform()
    
    # 等待tooltip文本元素可见后提取内容
    tooltip_items = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'div.CapacityTooltipBody-item')))
    res_list = [item.text for item in tooltip_items]
    print("res_list", res_list)

finally:
    driver.quit()

补充说明

  • 替换了过时的User-Agent,降低被网站识别为异常请求的概率
  • 用WebDriverWait显式等待替代随机sleep,提升代码稳定性
  • 若需要获取所有房型的悬停文本,可循环遍历所有PropertyCardImageContainer元素,逐个执行悬停和文本提取操作

内容的提问来源于stack exchange,提问作者tientoen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:45:50