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

使用Python Playwright选中下拉框值失败,Mês选项无法选中求助

问题排查与解决方案

核心原因

frmVisao:meses下拉框的选项是动态加载的:只有在选择periodo(年份)之后,后端才会返回对应年份的月份选项并渲染到页面上。原代码中没有等待该下拉框的选项加载完成就直接执行选择操作,导致Playwright无法找到目标选项。

修复步骤

  1. 等待下拉框可交互:在选择月份前,先确认frmVisao:meses元素处于可操作状态。
  2. 等待目标选项出现:确保要选择的月份选项(03)已经被渲染到页面中。
  3. 明确指定选择方式:使用value参数明确指定要选择的选项值,避免匹配歧义。

修改后的代码

from playwright.sync_api import sync_playwright, expect

with sync_playwright() as p:
    nav = p.chromium.launch(headless=False)
    page = nav.new_page()

    page.goto('https://www4.trf5.jus.br/diarioeletinternet/paginas/consultas/consultaDiario.faces')

    # 选择前三个下拉框
    page.locator("[name='frmVisao:orgao']").select_option('Seção Judiciária do Sergipe')
    page.locator("[name='frmVisao:edicao']").select_option('Administrativo')
    page.locator("[name='frmVisao:periodo']").select_option('2021')

    # 等待月份下拉框就绪并确认目标选项存在
    meses_locator = page.locator("#frmVisao:meses")
    expect(meses_locator).to_be_enabled()
    expect(meses_locator.locator("option[value='03']")).to_be_visible()

    # 选择目标月份
    meses_locator.select_option(value='03')

    page.wait_for_timeout(5000)
    nav.close()

额外说明

  • 使用expect断言可以更可靠地确保元素状态符合预期,比单纯的等待方法容错性更强。
  • 若仍出现异常,可尝试添加page.wait_for_load_state('networkidle'),确保页面网络请求完全结束后再执行后续操作。

内容的提问来源于stack exchange,提问作者João Bosco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 22:52:45