Сценарий Sikuli останавливается случайно - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть простой скрипт SikuliX, который я использую для автоматизации некоторых простых задач тестирования в игре. Скрипт просто бесконечен, в то время как l oop делает несколько кликов и перетаскивает некоторые элементы на экран. Он работает нормально, но иногда, по-видимому, без причины, он останавливается. Иногда он работает часами, иногда длится всего 5 минут. Весь код выглядит так:

def mandaMagia(magia):
    type(Key.ENTER)
    sleep(0.1) 
    type(magia)
    sleep(0.1) 
    type(Key.ENTER)
    sleep(0.1) 

def danca():
    type(Key.DOWN, Key.CTRL)
    sleep(0.2)
    type(Key.UP, Key.CTRL)
    sleep(0.1) 

def reloadStn():
    pos1 = Location(3136,260)
    pos2 = Location(3136,450)
    dragDrop(pos2, pos1)
    sleep(0.2)

def alimentarC1():
    rightClick(Location(3136,510))
    sleep(0.2)

def alimentarC2():
    rightClick(Location(2185,450))
    sleep(0.2)

def alimentarC3():
    rightClick(Location(1216,460))
    sleep(0.2)


def loopPrincipal():
    dancaCounter = 0
    while 1:
        try:
            alimentarC2()
            mandaMagia("s2")
            danca()
            alimentarC3()
            mandaMagia("s3")
            danca()
            alimentarC1()
            reloadStn()
            mandaMagia("s1")
            danca()
            sleep(0.3)
        except:
            print('Exception thrown')   

loopPrincipal()
print('script end')

Когда сценарий останавливается, я проверяю IDE sikulx, чтобы увидеть, есть ли какие-то исключения, но нет. Я также проверяю терминал, так как запускаю его командой java -jar sikulixide-2.0.4.jar, но также не вижу сообщения об ошибке. Что здесь может быть не так? Почему l oop просто не работает бесконечно? Заранее спасибо.

РЕДАКТИРОВАТЬ Итак, я поместил эти два сообщения печати, одно в блоке исключений, а другое после конца l oop, и заметил, что когда происходит ошибка, ничего из эти сообщения напечатаны, я до сих пор понятия не имею, что еще нужно сделать, чтобы узнать, что происходит. Я заметил, что в большинстве (но не во всех) случаях это происходит просто после выполнения команд type(Key.DOWN, Key.CTRL) / type(Key.UP, Key.CTRL).

...