代码之家  ›  专栏  ›  技术社区  ›  João Bosco

使用python player从选择下拉列表中选择一个值

  •  0
  • João Bosco  · 技术社区  · 1 年前

    我试图用python player从下拉菜单中选择一个值,但它不起作用。 screenshot of dropdown

    我可以成功地首先从这三个值中获得值,但带有“Ms”标签的那个根本不起作用。

    这是代码

    from playwright.sync_api import sync_playwright, Playwright
    
    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;jsessionid=A7EF0E11BE9943A9942B54CE45F7C7F9')
    
        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')
        page.locator('xpath=//*[@id="frmVisao:meses"]').select_option('03')
    
        page.wait_for_timeout(5000)
    
    
        nav.close()
    

    有人知道我做错了什么吗?

    这是网站: https://www4.trf5.jus.br/diarioeletinternet/paginas/consultas/consultaDiario.faces .

    1 回复  |  直到 1 年前
        1
  •  0
  •   ggorlen Hoàng Huy Khánh    1 年前

    你的代码对我来说一直有效。一旦你选择了其他字段,这些meses选项就会被填充,所以你可以使用 wait_for_function() 要等待月份填充,以避免出现竞争情况:

    from playwright.sync_api import sync_playwright  # 1.40.0
    
    
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto("<Your URL>")
        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")
        page.wait_for_function("""
            document
              .querySelectorAll('[name="frmVisao:meses"] option')
              .length > 11
        """)
        page.locator('[name="frmVisao:meses"]').select_option("03")
        page.screenshot(path="verify.png")
        browser.close()
    

    一个更精确(可能更好)的条件是封锁,直到3月份的确切选择可用:

    page.wait_for_function("""
        document.querySelector('[name="frmVisao:meses"] option[value="03"]')
    """)