""" 主程序 - 演示如何使用登录模块 """ from playwright.sync_api import sync_playwright from login import login from time import sleep import re import time def main(): with sync_playwright() as playwright: # 调用登录模块 browser, context, page, main_frame = login( playwright=playwright, username="BLDpengqiangqiang", password="Cqbld123456.", headless=False, ignore_https_errors=True ) # 登录成功后可以进行后续操作 # 点击打开“菜单” main_frame.locator("i").first.click() #page.pause() # 点击打开“菜单” with page.expect_popup() as page1_info: main_frame.get_by_title("离散备料计划维护", exact=True).first.click() page1 = page1_info.value main_frame=page1.locator("#forwardFrame").content_frame inner_frame_locator = main_frame.locator("#mainiframe") inner_frame_locator.wait_for(state="visible", timeout=15000) inner_frame = inner_frame_locator.content_frame # 点击图标按钮 inner_frame.locator(".search-name-wrapper > .iconfont").click() inner_frame.get_by_text("订单号查询").click() inner_frame.get_by_role("tab", name="全部").click() inner_frame.locator("#rc_select_0").fill("5000") #发送回车键 inner_frame.locator("#rc_select_0").press("Enter") # 输入订单号 textbox = inner_frame.get_by_role("textbox", name="来源生产订单号") textbox.fill("SC70202510110003,SC70202510110004") inner_frame.locator(".search-component-searchBtn").click() print("查询完成,等待加载结果...") # 等待加载完成 loading_locator = inner_frame.locator("div").filter(has_text="加载中").nth(1) try: loading_locator.wait_for(state="visible", timeout=3000) loading_locator.wait_for(state="hidden", timeout=0) # 无限等待,直到消失 except TimeoutError: # 加载很快完成,或者没有出现加载提示 pass print("加载完成,开始选择数据...") inner_frame.get_by_role("row", name="序号").get_by_label("").check() inner_frame.get_by_role("button", name="更多").hover() inner_frame.get_by_text("输出").click() input_box = inner_frame.locator("div").filter(has_text=re.compile(r"^行数阈值$")).locator("input[type='text']") input_box.fill("300000") # 等待下载事件 with page1.expect_download() as download_info: inner_frame.get_by_role("button", name="确定(Y)").click() # 获取下载对象 download = download_info.value # 指定保存路径和文件名 download.save_as("D:/python/playwrite/data/导出文件.xlsx") page1.pause() input("按回车退出...") # 关闭浏览器 context.close() browser.close() if __name__ == "__main__": main()