import time from playwright.sync_api import Playwright, sync_playwright def run(playwright: Playwright) -> None: # 启动浏览器,禁用无头模式 browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() try: # 打开登录页面 print("打开登录页面...") page.goto("https://ww1.colorlightcloud.com/login", wait_until="domcontentloaded") # 等待 DOM 加载完成 # 输入用户名 print("输入用户名...") username_input = page.locator("#mat-input-0") # 通过 id 定位用户名输入框 username_input.fill("Ylt5786") # 输入密码 print("输入密码...") password_input = page.locator("input[type='password']") # 根据实际元素定位密码输入框 password_input.fill("DJCtjy064") # 点击登录按钮 print("点击登录按钮...") login_button = page.locator("button.color-login-btn") # 通过 class 定位登录按钮 login_button.click() # 等待登录成功 print("等待登录成功...") page.wait_for_url("https://ww1.colorlightcloud.com/home", timeout=60000) # 等待跳转到 home 页面 # 点击“媒体库” print("点击媒体库...") media_library = page.get_by_text("媒体库") # 通过 text 定位媒体库 media_library.click() # 先删除历史文件,防止垃圾太多 # 点击 "播报充电情况" print("点击播报充电情况...") playback_charge_status = page.get_by_text("播报充电情况") playback_charge_status.dblclick() time.sleep(2) # 检查 元素是否存在 print("检查 元素是否存在...") if page.locator("span.media-group-name").count() > 0: # 鼠标移动到第一个 元素 print("鼠标移动到第一个 元素...") first_span = page.locator("span.media-group-name").nth(0) # 定位第一个 元素 first_span.hover() # 鼠标移动到该元素 # 定位并点击外层的 元素 print("定位并点击外层的 元素...") checkbox_span = page.locator("span.mat-checkbox-inner-container").nth(0) # 定位 元素 if checkbox_span.is_visible(): checkbox_span.click(force=True) # 强制点击该元素 # 定位并点击 元素 print("定位并点击删除按钮...") delete_icon = page.locator("mat-icon:has-text('delete')").nth(0) if delete_icon.is_visible(): delete_icon.click() # 点击该元素 # 定位并点击