Sikuli FAQ

12th Сентябрь 2011 ;)

Софтина Sikuli бесплатная, качается тут: http://sikuli.org/
Для чего она ?

Sikuli - позволяет автоматизировать различные задачи. Софт на Java, мультиплатформенный. Вообще я редко вижу хорошие поделки на Java. Дак вот это одна из хороших.

Если на AutoHotKey или AutoIt вы пишите скрипты или максимум используете гавенные средства для быстрого написания скриптов (нормальных там нет точно) то понимаете что они конечно значительно ускоряют разные процессы по сравнению с какими нибудь Delphi, однако Sikuli борет по скорости разработки даже AHK класс.

Как завещал Ленин, Учить учиться и еще раз Учиться!

Сикули – еще больше визуальный язык для автоматизации рутины, можно автоматизировать все что пожелает душа, если бы кто-то мог сравнить с Human Emulator или Zenno Poster было бы просто улетно, но у меня нет их лицензий.

На офсайте есть примеры, да все на инглише, ну а хули вы хотели, в буржунет же лезете. Если вчитать и начать работать вы увидите что скрипты пишутся на Python (а точнее на Jython) и в чем главная фича Sikuli – в том что вместо кода можно вставлять скриншоты разных системных элементов. т.е. если вы хотите программно нажать на кнопку, то вы просто делаете ее снимок и в коде появляется эта кнопочка, Sikuli сам разыскивает выделенные элементы на экране и нажимает их за вас, умеет он так же скроллить, двигать разные элементы и конечно ДрагнДропать.

Я сам просто обалдел от такой программы и уже пытаюсь разобраться как автоматизировать отправку заявок на Rotapost, просто Python для меня в новинку.

Вообщем всем советую начать разбираться а тут (jkeks.ru) я буду выкладывать некий FAQ по Sikuli, тех решений что нашел сам, или может вы подскажете, как я это делаю с SublimText2.

Sikuli Вопросы и ответы:

Q: в чем пишутся скрипты ?
A: Jython, это тот же Python

Q: Можно ли автоматизировать отправку заявок на Rotapost , а то Димок спецом не дает автоматизировать
A: Да я  как и обещал кладу тут скриншот исходника для автоматизации Rotapost отправки заявок, исходник в 100500  раз прощще чем на iMacros ;) Вот он

Кстати, вот мой способ отправки заявок в Rotapost, которым пользуюсь именно я: http://citymobi.ru/pay.php?agent=24405&id_d=1196618

Q: Как вставить паузу ?
A: sleep (1)  это одна секунда

Q: Иногда не находит картинки, почему ?
A: Продукт сыроват, и иногда такое бывает, перезапускал софтину – лечилось.

Подписаться на обновления блога

Вам понравился наш блог, хотите следить за обновлениями? Подпишитесь на RSS рассылку или рассылку по электронной почте. Так же вы можете следить за нами в Twitter.
Введите Ваш E-mail:

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

Комментарии читателей

  1. Хайпер |

    Популярная тема – автоматизировать ротапост. Да и заявки там сейчас хорошо пошли, несмотря на то, что цену поднял. Так что благодарен за твои изыскания в области автоматизации сей биржи. Буду рад, если сделаешь это дело

  2. Андрей |

    А как его зациклить? Или писать 200 раз одно и тоже?

  3. Андрей |

    И еще, если если к примеру в момент (действия 2) заказа окошко с кнопкой отправить свернуто и он не может найти оранжевую кнопку – скрипт отрубается как этого избежать?

  4. jkeks |

    да это же я так понял Питон, как хочешь так и цикли, там в доках масса примеров.
    примеры тут : http://sikuli.org/docx/tutorials/surveillance/sur…
    например нечто вроде:
    while not .inside().exists():
    sleep(5)
    popup("bus has arrived")

    Если сам сделаю, то сюда положу исходничек.
    Меня достает глюк один что после сохранения проекта, он теряет картинки, вот это попа.

  5. jkeks |

    а вот с длительными задержками надо ороться либо длинной паузой, я ставил аш 20 секунд, чтобы работало более менее. Либо вообще-то правильно написать так:
    Ждать пока появится эта кнопочка и нажать ее
    Это тоже надо бороть, если сделаю – напишу.
    Кстати вышла RC3, но глюки не ушли.

  6. Tudin |

    endOfCycle = False #Начало цикла и его имя (у нас – endOfCycle)
    while not endOfCycle: #Условие цикла
    if not exists(N.img): #(не заканчивать до события- картинка N.img)
    endOfCycle = True
    Честно сперто отсюда :) http://cryptrat.wordpress.com/2010/09/26/ (Пример работы с каптчей)
    Если нужно дождаться определенной картинки, а время появления ее неизвестно то:
    wite (ТвояКартинка,FOREVER)
    С параметром FOREVER программа sikuli будет ждать картинку пока она не появится на экране.
    Кстати в таких ситуациях программу можно "подвесить". Мне после очередного эксперимента пришлось принудительно завершать программу. После этого пошарив по нету нашел хоткей завершения выполнения скрипта – Shift+Alt+C

  7. jkeks |

    Спасибо, мне все время кажется что Sikuli глючит именно на XP, потому что ниче толком неработает, я даже не могу запустить загруженный проект. Прям беда, поэтому уже писал все на AutoHotKey, но и там какая-то беда, то находит то не находит.

  8. Tudin |

    В моем случае у Sikuli проблема с кешированными рисунками (она их теряет)
    Пример – сообщение о ошибке:
    org.sikuli.script.FindFailed: FindFailed: can not find ggfr-1.png on the screen.
    Line 4, in file C:DOCUME~11LOCALS~1Tempsikuli-tmp8895813137138271245.py
    как побороть не нашел.

  9. jkeks |

    Да надо тикет писать им, у меня руки не доходят, где то тут: https://github.com/sikuli/sikuli/