2016-07-20 2 views
1

У меня очень странная проблема, которую я раньше не видел в python.Ошибка авторизации кликов PyAutoGui

У меня есть сценарий, который работает безупречно на одном ПК, и когда я пытаюсь использовать его на другом, моя определенная функция терпит неудачу.

Я использую 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() 

Что происходит на этой другой машине, когда он находит изображение, оно перемещает курсор и щелчки, как ожидается, в заявлении попробовать, но затем он сразу выполняет, кроме заявления тоже.

Единственная разница между нашими двумя машинами - я работаю с подушкой 3.1.1, а на той, на которой она не работает, работает подушка 3.3.0.

Мой инстинкт - это что-то изменившееся, которое не возвращает флаг успеха при нажатии, который вызывает исключение. Я не знаю, почему это было бы так, потому что вся подушка используется для распознавания изображений.

Понятно, что я довольно новичок в обнаружении ошибок, и я не уверен, где продолжить. Любая помощь будет принята с благодарностью.

Редакция:

: причина для вызова функции click в исключении - исключение операторов ожидания во время экранов загрузки. в зависимости от количества обрабатываемых данных трудно предварительно запрограммировать задержки.

ответ

1

Так получилось, что это произошло из-за ошибки разрешений на этой машине. Из-за того, что он был бизнес-компьютером, у пользователя не было прав администратора. Это заставило клики регистрироваться и сразу же вызвало исключение WinError 5. Я решил это, добавив еще одно исключение из моего блока try. "за исключением 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

Это было исправлено с версии 0.9.34. (Или, по крайней мере, работал. Клики, похоже, работают, но теперь PyAutoGUI подавляет это исключение.) Все, что вам нужно сделать, это установить или обновить PyAutoGUI из PyPI с помощью pip install -U pyautogui

Смежные вопросы