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

Playwright Python爬虫:弹窗内Show All按钮定位失败求助

问题解决:Playwright无法定位弹出窗口中的"Show All"按钮

问题根源

你的代码存在三个核心问题导致按钮定位失败:

  1. 操作对象错误:你在主页面page上尝试定位按钮,但"Show All"按钮实际位于点击马名后弹出的新窗口(popup)中,必须通过popup对象来定位元素。
  2. 执行顺序错误:你先尝试点击按钮,再获取popup对象,此时popup还未被正确捕获,代码逻辑顺序颠倒。
  3. 缺少元素等待:弹出窗口加载需要时间,直接执行点击操作可能遇到元素未渲染完成的情况。

修改后的代码

import pandas as pd
from playwright.sync_api import sync_playwright, expect

def scrape_ranking(url, sheet_name):
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)  # 调试时可改为False可视化窗口状态,上线后改回True
        page = browser.new_page()
        page.goto(url, wait_until="domcontentloaded")

        # 点击马名,等待弹出窗口并获取popup对象
        with page.expect_popup() as popup_info:
            page.click('text="LUCKY MISSILE"')
        popup = popup_info.value
        
        # 等待弹出窗口网络请求完成,确保元素加载
        popup.wait_for_load_state("networkidle")
        # 等待"Show All"按钮可见后再点击
        show_all_btn = popup.get_by_text("Show All")
        expect(show_all_btn).to_be_visible()
        show_all_btn.click()

        # 等待点击后数据加载完成,时间可根据实际情况调整
        popup.wait_for_timeout(1000)
        
        html = popup.content()
        browser.close()

    tables = pd.read_html(html)
    df = tables[7]
    # 处理Excel写入,兼容文件不存在的情况
    try:
        with pd.ExcelWriter("hkjc.xlsx", engine="openpyxl", mode='a', if_sheet_exists='overlay') as writer:
            df.to_excel(writer, sheet_name=sheet_name, index=True)
    except FileNotFoundError:
        df.to_excel("hkjc.xlsx", sheet_name=sheet_name, index=True)

url = 'https://racing.hkjc.com/racing/information/English/racing/RaceCard.aspx?RaceDate=2023/04/06&Racecourse=HV&RaceNo=1'
scrape_ranking(url, "LUCKY MISSILE")

关键调整说明

  • 切换操作对象到popup:通过popup = popup_info.value获取弹出窗口对象,所有针对弹出窗口的操作都基于这个对象执行。
  • 强化等待逻辑:
    • 使用popup.wait_for_load_state("networkidle")等待弹出窗口的网络请求全部完成,确保页面元素完整加载。
    • 用expect(show_all_btn).to_be_visible()确保按钮已经渲染并可见,彻底避免因元素未加载导致的定位失败。
  • 调试与兼容优化:
    • 保留headless=False便于调试时观察窗口操作流程,上线后可改回无头模式。
    • 增加Excel文件不存在时的创建逻辑,避免首次运行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:35:01