在第二台 MacBook Pro 桌面上执行 PyAutoGUI 代码

Execute PyAutoGUI code on second MacBook Pro desktop

我有下面的代码,匹配华尔街日报头版“Tech”header/button的截图,然后点击它-

import pyautogui as pya
import time

# timing start
start = time.time()

# center of screen
pya.moveTo(840, 525, 1)

# navigate to "Tech" button
p = pya.locateOnScreen('wsj-tech.png', confidence = 0.8, grayscale=False)
print(p)
x, y = pya.center(p)
x, y = x/2, y/2
d = pya.moveTo(x, y, 1)
pya.doubleClick(d)

# end timer
end = time.time()
print(end - start)

要执行代码,我必须在浏览器上方(下方也可以)设置 IDE (spyder):

有什么方法可以将浏览器留在另一个桌面上吗?例如。在 spyder 中执行脚本(在“桌面 2”上),然后滑动到“桌面 1”以查看 WSJ 页面上的自动点击器工作?

仅供参考,计算机连接到任何外部桌面。

好问题!不幸的是,不可能pyautogui 做你要求的事情。这是因为 pyautogui 只能在前台工作 objects/windows 而不能在后台或其他工作空间中最小化 objects/windows。这是一个著名的 feature request,谁知道它是否或何时可以实施。

可能的解决方案:

  • 如果不需要 GUI,只需使用 pythonselenium 找到 WSJ 横幅并用 headless 单击它 chrome 浏览器实例(浏览器将被隐藏)

  • 将您的代码和浏览器运行放在虚拟机中,这样它就可以执行而不必在前台

  • 尝试 pythonatomacos,它提供 macOS GUI 应用程序的自动化

  • 使用 macOS 自动化工具,例如 Hammerspoon,它允许您移动 windows、与其他应用程序对话等