You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac环境下如何自动关闭/拦截Modal弹窗?求解决方案

自动点击Modal弹窗“一天内不再显示”复选框的方案

针对你在Mac上用Keyboard Maestro处理多个网站弹窗的需求,以下是几种实用方案:

一、Keyboard Maestro内置动作(零代码最简便)

无需编写代码,直接用软件自带功能实现:

  • 创建新宏,设置触发条件为「打开指定网站时」
  • 添加「Find Image on Screen」动作:截取蓝色复选框的清晰区域截图,设置找到后自动点击该位置
  • 前置添加「Pause」动作(1-2秒),等待弹窗完全加载后再执行点击

二、JavaScript方案(适配Chrome/Safari,精准定位)

利用浏览器JS直接操作DOM,适合不同网站的通用适配,可在Keyboard Maestro的「Execute JavaScript in Front Browser」动作中运行:

通用文本匹配版

通过复选框旁的文本定位元素:

// 查找包含“一天内不再显示”文本的标签
document.querySelectorAll('label').forEach(label => {
  if (label.textContent.includes('一天内不再显示')) {
    // 定位关联的复选框(可能是子元素或相邻元素)
    const checkbox = label.querySelector('input[type="checkbox"]') || label.previousElementSibling;
    if (checkbox && !checkbox.checked) {
      checkbox.click();
      // 可选:自动点击弹窗确认按钮(根据实际按钮文本调整)
      document.querySelector('button:contains("确定")')?.click();
    }
  }
});

元素属性定位版

如果知道复选框的class/id,直接定位更高效:

const checkbox = document.querySelector('.one-day-hide-checkbox');
if (checkbox && !checkbox.checked) {
  checkbox.click();
  document.querySelector('.popup-confirm-btn')?.click();
}

三、AppleScript方案(系统级控制浏览器)

适合需要统一控制Safari/Chrome的场景,在Keyboard Maestro的「Execute AppleScript」动作中运行:

tell application "Safari"
  activate
  delay 2 -- 等待弹窗加载
  tell current tab of front window
    do JavaScript "
      document.querySelectorAll('label').forEach(label => {
        if (label.textContent.includes('一天内不再显示')) {
          const checkbox = label.querySelector('input[type=\"checkbox\"]') || label.previousElementSibling;
          if (checkbox && !checkbox.checked) {
            checkbox.click();
            document.querySelector('button:contains(\"确定\")')?.click();
          }
        }
      });
    "
  end tell
end tell

四、Python+PyAutoGUI方案(依赖屏幕坐标)

适合跨浏览器但需固定屏幕分辨率的场景,先安装pyautogui库:

import pyautogui
import time

time.sleep(2) # 等待弹窗出现
# 用pyautogui.displayMousePosition()获取复选框和确认按钮的坐标
checkbox_pos = (120, 800)
confirm_btn_pos = (300, 820)
pyautogui.click(checkbox_pos)
pyautogui.click(confirm_btn_pos)

内容的提问来源于stack exchange,提问作者user21243727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:05:27