window - 单击窗口上的特定位置,单击特定按钮并控制窗口是否更改

标签 window applescript

实际上我对同一个问题有 3 个问题:用 applescript 控制窗口。

  1. 如果我要按“Google Chrome”应用程序的“关闭窗口”按钮,我该怎么办?
  2. 是否可以检查窗口是否发生变化?例如,查看是否出现弹出窗口或类似的...
  3. 点击特定位置进入窗口怎么样?我的意思是,我知道我可以使用
    tell application "System Events"
        click at {x,y}
    end tell

但此命令使用整个屏幕作为引用系统,我希望它仅适用于特定窗口。例如,如果在“{x,y}”处输入“{1,1}”,applescript 将点击菜单栏上的第一项。有没有一种方法可以让“系统事件”点击“{1,1}”,但在窗口“Google Chrome”上?

最佳答案

以下是如何使用 AppleScript 关闭 Google Chrome 前窗的三个示例:

注意:以下假设在您测试每个示例 AppleScript 代码<时,Google Chrome 运行时至少打开一个窗口/em> 在脚本编辑器中。

示例一是最直接的方式:

tell application "Google Chrome" to close front window

例子二直接点击关闭按钮:

tell application "System Events" to tell ¬
    application process "Google Chrome" to ¬
    click button 1 of front window

示例三计算关闭按钮的中心并点击那里:

activate application "Google Chrome"

delay 0.5

tell application "System Events" to tell ¬
    application process "Google Chrome" to tell ¬
    front window

    set posB1 to (position of button 1)
    set szB1 to (size of button 1)

    set x to (item 1 of posB1) + (item 1 of szB1) / 2 as integer
    set y to (item 2 of posB1) + (item 2 of szB1) / 2 as integer

end tell

tell application "System Events" to click at {x, y}

请注意,在前两个示例中,Google Chrome 的前窗口甚至不需要是桌面上最前面的窗口;然而,对于第三个示例,它确实如此,否则 click at {x, y} 将不会到达预期的目标

就是说,如果示例三是直接的方式(如示例一)来完成工作,那么真的不应该使用示例三。示例 3 只是一个概念验证,用于获取要点击的坐标。此方法在某些边缘情况下可能很有用,尤其是在不直接支持 AppleScript 的应用中。


注意:示例 AppleScript 代码 就是这样,不包含任何可能的错误 处理合适的。用户有责任添加任何适当、需要或想要的错误处理。看看 try 声明error AppleScript Language Guide 中的声明 .另见,Working with Errors .

关于window - 单击窗口上的特定位置,单击特定按钮并控制窗口是否更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57070312/

相关文章:

python - 使用 selenium 在 python 中处理多个选项卡时出现 IndexError

wpf - 在WPF中使用动画改变窗口大小

arrays - 将列表转换为 applescript 数组

swift - 苹果系统。我如何请求访问每个应用程序的系统事件?

AppleScript 中的字符串操作

javascript - 使用 Applescript 从 Javascript 下拉菜单中选择选项 - 如何?

jquery - $(window).resize() 运行缓慢

javascript - Appcelerator Titanium(合金)- 打开另一个包含新窗口的 Controller

javascript - ExtJS:如何在特定的 `Window` 组件上加载附加脚本?

applescript - LibreOffice:递归转换文件夹和子文件夹中的文档