问题描述
我有以下代码,与“华尔街日报”首页上“技术”标题/按钮的屏幕截图匹配,然后单击它-
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中执行脚本(在“ Desktop 2”上),然后滑动到“ Desktop 1”以查看WSJ页面上的autoclicker工作?
仅供参考,计算机未未连接到任何外部台式机。
解决方法
好问题!不幸的是, 不可能 使用pyautogui
来完成您要问的事情。这是因为pyautogui
只能在前景对象/窗口上工作,而不能在后台或其他工作空间中最小化对象/窗口。 feature request是著名的,他知道是否或何时可以实施它。
可能的解决方案:
-
如果不需要GUI,只需使用
python
库selenium查找WSJ标语,然后使用 headless chrome浏览器单击它实例(浏览器将被隐藏) -
让您的代码和浏览器在虚拟机中运行,这样它就可以执行而不必放在前台
-
尝试使用
python
库atomacos,该库提供macOS
GUI应用程序的自动化功能 -
使用Hammerspoon之类的
macOS
自动化工具,该工具可让您移动窗口,与其他应用程序对话等