playwright基于已打开浏览器上操作案例(从文件内读取订单号循环操作)

上文搞定了playwright在已打开浏览器操作的方法(主要用来解决登录的问题),今天整个订单操作的案例

如何使用playwright在已有浏览器上进行自动化操作

实现以下能力:

1、读取文件内的订单号,传给脚本循环

2、根据订单号查询、备注

首先是读取文件数据脚本

def read_order_numbers_from_excel(file_path="data.xls"):
    """
    从Excel文件读取订单号
    从第一列第二行开始循环读取
    """
    try:
        # 读取Excel文件
        df = pd.read_excel(file_path, header=None)  # 不设置表头
        
        # 获取第一列的数据,从第二行开始(索引1)
        order_numbers = df.iloc[1:, 0].dropna().astype(str).tolist()
        
        print(f"从文件读取到 {len(order_numbers)} 个订单号: {order_numbers}")
        return order_numbers
        
    except FileNotFoundError:
        print(f"错误:找不到文件 {file_path},请确保data.xls文件存在于脚本同目录下")
        return []
    except Exception as e:
        print(f"读取Excel文件时出错: {e}")
        return []

页面操作的脚本

with sync_playwright() as p:
    # 连接到调试模式的 Chrome
    browser = p.chromium.connect_over_cdp("http://localhost:9222")
    pages = browser.contexts[0].pages if browser.contexts else []
    page = pages[0]
    page.wait_for_load_state('networkidle')
    
    # 读取订单号数据
    order_numbers = read_order_numbers_from_excel("data.xls")
    
    if not order_numbers:
        print("没有读取到订单号,程序退出")
        exit()
    
    # 循环处理每个订单号
    for i, order_number in enumerate(order_numbers, 1):
        print(f"\n=== 正在处理第 {i} 个订单: {order_number} ===")
        
        # 点击所有订单菜单
        page.locator("xpath=//*[@id='root']/div/div/div/div/div/div[1]/div/div[1]/div[2]/a[4]/div/div").click()
        
        # 订单信息内输入订单号 - 这是您要修改的第14行
        page.locator("//*[@id='OrderNo']").fill(order_number.strip())

        time.sleep(2)
        
        # 点击查询
        page.locator("xpath=//button[contains(@class, 'ant-btn-primary') and contains(., '筛 选')]").click()
        
        # 等待查询结果
        time.sleep(2)
        
        # 点击备注
        page.locator("xpath=//span[contains(@class, 'tagIcon')]//img").click()
        
        # 选择标志
        page.locator("xpath=//*[@id='orderTag']/label[1]/span[1]/input").click()
        
        # 输入备注
        page.locator("//*[@id='remark']").fill(order_number.strip())
        
        # 点击确认
        page.locator("xpath=//button[@type='submit' and contains(@class, 'ant-btn-primary')]").click()
        
        print(f"订单 {order_number} 处理完成")
        time.sleep(1)  # 等待操作完成

    print(f"\n✅ 所有 {len(order_numbers)} 个订单处理完成!")

AI是个好东西,脚本和xpath都是用ai写的

如原脚本没有实现读取循环,只加了个提示词

image

 再如,xpath只需要复制element+提示词,就可以生成很多种xpath的写法

image

 

如果程序执行错误,也可以截图给AI分析,好东西

 

posted @ 2025-11-10 16:40  小贝书屋  阅读(21)  评论(0)    收藏  举报