在第二台MacBook Pro台式机上执行PyAutoGUI代码

问题描述

我有以下代码,与“华尔街日报”首页上“技术”标题/按钮的屏幕截图匹配,然后单击它-

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):

enter image description here

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

仅供参考,计算机未连接到任何外部台式机。

enter image description here

解决方法

好问题!不幸的是, 不可能 使用pyautogui来完成您要问的事情。这是因为pyautogui只能在前景对象/窗口上工作,而不能在后台或其他工作空间中最小化对象/窗口。 feature request是著名的,他知道是否或何时可以实施它。

可能的解决方案:

  • 如果不需要GUI,只需使用pythonselenium查找WSJ标语,然后使用 headless chrome浏览器单击它实例(浏览器将被隐藏)

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

  • 尝试使用pythonatomacos,该库提供macOS GUI应用程序的自动化功能

  • 使用Hammerspoon之类的macOS自动化工具,该工具可让您移动窗口,与其他应用程序对话等