zhiyinya/AIStudioBuildWS
0
1import time2import os3from playwright.sync_api import Page, expect4from utils.paths import logs_dir5from utils.common import ensure_dir6 7def handle_untrusted_dialog(page: Page, logger=None):8 """9 检查并处理 "Last modified by..." 的弹窗。10 如果弹窗出现,则点击 "OK" 按钮。11 """12 ok_button_locator = page.get_by_role("button", name="OK")13 14 try:15 if ok_button_locator.is_visible(timeout=10000): # 等待最多10秒16 logger.info(f"检测到弹窗,正在点击 'OK' 按钮...")17 18 ok_button_locator.click(force=True)19 logger.info(f"'OK' 按钮已点击。")20 expect(ok_button_locator).to_be_hidden(timeout=1000)21 logger.info(f"弹窗已确认关闭。")22 else:23 logger.info(f"在10秒内未检测到弹窗,继续执行...")24 except Exception as e:25 logger.info(f"检查弹窗时发生意外:{e},将继续执行...")26 27def handle_successful_navigation(page: Page, logger, cookie_file_config):28 """29 在成功导航到目标页面后,执行后续操作(处理弹窗、保持运行)。30 """31 logger.info("已成功到达目标页面。")32 page.click('body') # 给予页面焦点33 34 # 检查并处理 "Last modified by..." 的弹窗35 handle_untrusted_dialog(page, logger=logger)36 37 # 等待页面加载和渲染38 logger.info("等待15秒以便页面完全渲染...")39 time.sleep(15)40 41 logger.info("实例将保持运行状态。每10秒点击一次页面以保持活动。")42 while True:43 try:44 page.click('body')45 time.sleep(10)46 except Exception as e:47 logger.error(f"在保持活动循环中出错: {e}")48 # 在保持活动循环中出错时截屏49 try:50 screenshot_dir = logs_dir()51 ensure_dir(screenshot_dir)52 screenshot_filename = os.path.join(screenshot_dir, f"FAIL_keep_alive_error_{cookie_file_config}.png")53 page.screenshot(path=screenshot_filename, full_page=True)54 logger.info(f"已在保持活动循环出错时截屏: {screenshot_filename}")55 except Exception as screenshot_e:56 logger.error(f"在保持活动循环出错时截屏失败: {screenshot_e}")57 break # 如果页面关闭或出错,则退出循环58 