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写的
如原脚本没有实现读取循环,只加了个提示词

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

如果程序执行错误,也可以截图给AI分析,好东西
浙公网安备 33010602011771号