pyauto gui проблема: locateCenterOnScreen не находит правильное местоположение - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь написать простую программу автоматизации работы с кодом locateCenterOnscreen, чтобы найти место для щелчка, выполнить простое задание с щелчком и копированием и вставкой и повторить эти задания много раз.

При этом у меня возникает следующая проблема:

Время от времени он работает просто отлично, но иногда код locateCenterOnScreen находит неправильное место. Если я перезапускаю и очищаю вывод и пытаюсь снова, иногда он снова работает нормально, но иногда он все еще находит неправильное место.

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

Я использую двойной монитор, это может быть проблемой? Если так, что я должен сделать, чтобы решить эту проблему?

Я использую Блокнот Jupyter, и вот мой код.

import time
import pyautogui as p


def alttab():
    p.keyDown('alt');p.press('tab');p.keyUp('alt')

sku_code = p.locateCenterOnScreen("sku_code.png")
bd_code = p.locateCenterOnScreen("mag.png")
add_to_list = p.locateCenterOnScreen("add_to_list.png")

alttab()

for i in range(10):

    p.hotkey('ctrl', 'c')
    p.moveTo(bd_code);p.moveRel(-30,);p.click()
    p.hotkey('ctrl', 'v');p.press('enter')
    time.sleep(2)

    alttab()
    p.press('right');p.press('right');p.hotkey('ctrl', 'c')

    p.click(sku_code)
    p.hotkey('ctrl', 'a');p.press('delete');p.hotkey('ctrl', 'v');p.press('enter')
    time.sleep(2)

    alttab()
    p.press('right');p.hotkey('ctrl', 'c')

    p.moveTo(add_to_list)
    p.moveRel(7, 45);p.click()
    p.hotkey('ctrl', 'v')
    p.click(add_to_list)
    time.sleep(2)
    error = p.locateCenterOnScreen("error.png")

    # if everything goes fine to this point, it doesn't generate any pop-up, 
    # but if something goes wrong, it would generate a pop-up with "error.png" image.


    if error != None:
        p.press('enter')
        alttab()
        p.press('right');p.press('f2');p.typewrite("error");p.press('enter')
        p.press('left');p.press('left');p.press('left');p.press('left')

    else:
        p.press('enter')
        alttab()
        p.press('right');p.press('f2');p.typewrite("success");p.press('enter')
        p.press('left');p.press('left');p.press('left');p.press('left')
...