Я пытаюсь написать простую программу автоматизации работы с кодом 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')