PyAutoGui点击权限错误

PyAutoGui click permissions error

我有一个非常奇怪的问题,以前在 python 中从未见过。

我有一个脚本可以在一台电脑上完美运行,当我尝试在另一台电脑上使用它时,我定义的函数失败了。

我正在使用 PyAutoGUI 来自动化一些流程。

import csv
import pyautogui

pyautogui.PAUSE = 0.50
pyautogui.FAILSAFE = True


#click function requires arguments ('fullPathToImage', "Error Identifier")
def click(fullPathToImage, error):
    try:
        pyautogui.click(pyautogui.center(pyautogui.locateOnScreen(fullPathToImage)))
    except:
        print(error, " not found, trying again")
        click(fullPathToImage, error)

def start():
    click('C:/projects/images/test.png', "test.png")
    pyautogui.typewrite("This is my test text")

if __name__ == '__main__':
    start()

这台机器上发生的事情是,当它找到图像时,它移动鼠标并按预期在 try 语句中单击,但随后它也立即执行 except 语句。

我们两台机器之间的唯一区别是我是 运行 pillow 3.1.1,而它不工作的是 运行 pillow 3.3.0。

我的直觉是有些东西发生了变化,点击时不会返回成功标志,这会触发异常。我不知道为什么会这样,因为所有枕头都用于图像识别。

诚然,我对错误捕获还很陌生,我不确定从这里可以从哪里继续。任何帮助将不胜感激。

编辑:在异常中调用点击函数的原因是为了消除加载屏幕期间的等待语句。取决于正在处理的数据量,很难预编程延迟。

原来这是由于这台机器上的权限错误造成的。由于它是商用计算机,因此用户没有管理员权限。这导致点击被注册,然后立即触发 WinError 5 异常。我通过在我的 try 块中添加另一个异常来解决这个问题。 "except PermissionError: pass" 实施见下文

import csv
import pyautogui

pyautogui.PAUSE = 0.50
pyautogui.FAILSAFE = True


#click function requires arguments ('fullPathToImage', "Error Identifier")
def click(fullPathToImage, error):
    try:
        pyautogui.click(pyautogui.center(pyautogui.locateOnScreen(fullPathToImage)))
##################################    
    except PermissionError:
        pass
##################################    
    except:
        print(error, " not found, trying again")
        click(fullPathToImage, error)

def start():
    click('C:/projects/images/test.png', "test.png")
    pyautogui.typewrite("This is my test text")

if __name__ == '__main__':
    start()

此问题已从 0.9.34 版开始修复。 (或者至少,变通了。点击似乎有效,但现在 PyAutoGUI 抑制了这个异常。)你所要做的就是使用 pip install -U pyautogui

从 PyPI 安装或更新 PyAutoGUI