Помогите разобраться с установкой sikuli на Ubuntu


(Sergey Korol) #6

Ну вот собственно и причина нашлась. Во время установки сикули, у вас должен был появиться jar с необходимыми api. Его нужно проинсталлировать в локальный maven репозиторий, иначе депенденси не будет найдена. Инструкции можно найти здесь.


(Александр) #7

Воспользовался ссылкой и все установил как надо. Но к сожалению это не решило проблемы. Как мне теперь заимпортить библиотеку? Добавлял командой mvn install:install-file -Dfile=/home/alex/Downloads/sikuli-api-1.0.2-standalone.jar -DgroupId=info.testing.automated.sikuli -DartifactId=sikulix -Dversion=1.0.2 -Dpackaging=jar
Очень хотелось бы ваш пример посмотреть в действии и применить его.


(Sergey Korol) #8

Во-первых, я не знаю, что такое sikuli-api-1.0.2-standalone.jar и содержит ли он необходимые API. В инструкции вроде все предельно понятно было написано: sikulix-api.jar from root folder should be installed into local maven repository before test execution.
Во-вторых, если вы задаете новое имя / версию артефакту, то не забывайте изменить и dependency в pom’е.


(Александр) #9

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


(Sergey Korol) #10

Мм, похоже разработчик его удалил, ввиду наличия некоторых критических багов (т.к. это была бета). Поищу у себя в архиве, скину ссылку.


(Sergey Korol) #11

Попробуйте этот вариант. Устанавливать надо пакеты для разработки. IDE / OCR не нужны. После установки, в корне установочной директории должен появиться необходимый jar (помимо всех прочих), который надо проинсталлить в локальный maven репозиторий. Не помню точно, что там за версия. Если не получится, расшарю еще сам sikulixapi.


(Александр) #12

Спасибо! Как установлю сразу отпишусь.


(Александр) #13

Проинсталировал все успешно, выбрал пункт 2 без IDE. В корневой папке лежит теперь вот такой jar файл:

sikuli-script.jar

Я так понимаю это не тот jar-файл который мне нужен?


(Sergey Korol) #14

Нужны паки 3,4.


(Александр) #15

Абсолютно та же картина, только вместо sikuli-script теперь sikuli-java. В корневой папке, которую я назвал sikulix лежит:

libs
sikuli-java.jar
sikuli-setup.jar
SikuliX-1.0.1-SetupLog.txt

(Sergey Korol) #16

Скорее всего это старая версия, но она должна прокатить для того, чтобы сикули нашел необходимые библиотеки во время экзекьюшена. Расшарил необходимый jar для установки в maven repo. Помните об имени и версии артефакта, установленных в dependency, прежде чем инталлировать jar.


(Александр) #17

Установил командой:

mvn install:install-file -Dfile=/home/alex/sikulix/sikulixapi.jar -DgroupId=info.testing.automated.sikuli -DartifactId=sikulix -Dversion=1.1.0 -Dpackaging=/home/alex/Documents/WORK/at.info-knowledge-base-master/functional\ test\ automation/sikuli/Java\ Sikuli\ WebDriver\ Examples/

Зависимости не ругаются. Но вот import не работает по прежнему.

import org.sikulix.script.Key;

Билд mvn выполнился успешно.

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building sikuli-examples 1.0
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ sikuli-examples ---
[INFO] Installing /home/alex/sikulix/sikulixapi.jar to /home/alex/.m2/repository/info/testing/automated/sikuli/sikulix/1.1.0/sikulix-1.1.0./home/alex/Documents/WORK/at.info-knowledge-base-master/functional test automation/sikuli/Java Sikuli WebDriver Examples
[INFO] Installing /tmp/mvninstall3629615986533351007.pom to /home/alex/.m2/repository/info/testing/automated/sikuli/sikulix/1.1.0/sikulix-1.1.0.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.456 s
[INFO] Finished at: 2014-08-04T15:10:59+04:00
[INFO] Final Memory: 6M/117M
[INFO] ------------------------------------------------------------------------

(Sergey Korol) #18

Хорошо, давайте поиграем в игру “найди N отличий”:

Правильный ответ:

mvn install:install-file -Dfile=path/sikulixapi.jar -DgroupId=info.testing.automated.sikuli -DartifactId=sikulix-api -Dversion=1.0.0 -Dpackaging=jar

П.С. Судя по логу консоли, вы еще и install goal запускаете, вместо test. Зачем? Вы ведь вручную инсталлируете jar.


(Александр) #19

Но вы же сами сказали, что нет никакой разницы, как называть артефакты. Но не важно, хорошо. Я сделал так как вы сказали и по прежнему не могу сделать import org.sikulix.script.Key; IDEA подсвечивает красным библиотеку и пишет что не может её найти.


(Sergey Korol) #20

Не важно, если вы при этом осознаете факт последующего изменения соответствующей dependency руками. Автоимпорт включен в проекте? Если нет, то нужно рефрешнуть maven, чтобы он зерезолвил новые артефакты.


(Александр) #21

Уже делал reimport, все равно это не помогает.


(Александр) #22

Не знаю как это объяснить, но я удалил весь проект и заново собрал его руками. Import заработал. Спасибо большое за отзывчивость. С миру по нитке, как говорится. Вопрос такой еще у меня архитектура 64 разрядная. Это может как-то повлиять на работу? Использую:

java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1~0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

(Sergey Korol) #23

Нет, новый сикули, в отличии от старого, не зависит от разрядности и версии jdk.


(Александр) #24

При попытке ввести в строку поиска google вылетает exception:

    [error] ImagePath: setBundlePath: Settings not changed: invalid BundlePath: null
[error] ResourceLoader: checkLibsDir: Not a valid libs dir for SikuliX (amd64): /home/alex/.m2/repository/info/testing/automated/sikuli/sikulix-api/1.0.0/libs
[error] ResourceLoader: checkLibsDir: Not a valid libs dir for SikuliX (amd64): /home/alex/.m2/repository/info/testing/automated/sikuli/sikulix-api/1.0.0/libs
java.lang.ExceptionInInitializerError
	at org.sikuli.script.Observer.checkPatterns(Observer.java:155)
	at org.sikuli.script.Observer.update(Observer.java:365)
	at org.sikuli.script.Region.observeDo(Region.java:2649)
	at org.sikuli.script.Region.observe(Region.java:2607)
	at info.testing.automated.sikuli.core.Desktop.observe(Desktop.java:44)
	at info.testing.automated.sikuli.core.Desktop.type(Desktop.java:36)
	at info.testing.automated.sikuli.examples.CommonSikuliActionsTests.sikuliClickAndType(CommonSikuliActionsTests.java:32)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
	at org.testng.SuiteRunner.run(SuiteRunner.java:240)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
	at org.testng.TestNG.run(TestNG.java:1057)
	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
	at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
	at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:125)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.lang.NullPointerException
	at org.sikuli.basics.ResourceLoader.check(ResourceLoader.java:394)
	at org.sikuli.basics.FileManager.loadLibrary(FileManager.java:82)
	at org.sikuli.script.Finder.<clinit>(Finder.java:39)
	... 37 more

(Sergey Korol) #25

У вас путь к либам не засечен. В последней версии (которую удалили), автоматом сетились env vars.