[Solved] Не запускается тест на java с использованием sikuli - Can't find dependent libraries


(Paul Manuilenko) #1

Доброго времени суток!
Вдохновился видео"How to use Sikuli test automation?", создал проект (не через мавн т.к. на работе много проблем с прокси и пр.) в IntelliJ IDEA Community Edition 13.1.4.
Немного работал с webdriver , проверил работопособнось проспейших тесто в – все ок,
Подключил из папки Sikuli-IDE файл sikuli-script.jar
При запуске тест падает с сообщением:

java.lang.UnsatisfiedLinkError: C:\Users\pmanuilenko\AppData\Local\Temp\tmplib\Win32Util.dll: Can't find dependent libraries
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1807)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
	at java.lang.Runtime.load0(Runtime.java:770)
	at java.lang.System.load(System.java:1003)
	at com.wapmx.nativeutils.jniloader.NativeLoader.loadLibrary(NativeLoader.java:44)
	at org.sikuli.script.Win32Util.<clinit>(Win32Util.java:19)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:169)
	at org.sikuli.script.Env.getOSUtil(Env.java:91)
	at org.sikuli.script.App.<clinit>(App.java:9)
	at mcopackage.mco_main_class.trySikuli(mco_main_class.java:33)

Технические характеристики системы:
OS Windows 7 SP1 64-bit.
Java 6 – 37 (Java™ SE Development Kit 6 Update 37) 32-bit.

Вот код тестика:

package mcopackage;

import org.openqa.selenium.By;
import org.testng.annotations.Test; //Для распознания аннотаций Test в TestNG
import org.testng.Assert; //Для проверок
import org.openqa.selenium.WebDriver; //Для использования драйвера selenium
import org.openqa.selenium.WebElement; //Для работы с Web-элементами
import org.openqa.selenium.firefox.FirefoxDriver; //Для работы с браузером Firefox
import org.sikuli.script.App; //Для работы с приложением
import org.sikuli.script.Pattern; //Для работы с паттернами
import org.sikuli.script.Screen; //Для работы с скринами экрана
import org.sikuli.script.FindFailed; //Для поиска элементов
import java.util.InputMismatchException;

public class mco_main_class {

    @Test(enabled = false)
    public void testGoodle() {
        WebDriver driver = new FirefoxDriver(); // Подключение драйвера браузера FirefoxDriver
        driver.get("http://www.google.com"); // перейти к Google
        WebElement indField = driver.findElement(By.name("q"));
        indField.sendKeys("Hello!");
        indField.submit();
        driver.quit();
    }
    @Test(enabled = true)
    public void trySikuli() throws FindFailed {
        App mco = App.open("D:\\Soft\\mco.jnlp");
        Screen screen = new Screen();
        Pattern mcoWindow = new Pattern("D:\\screenshots\\mcowindow.png");
        screen.wait(mcoWindow);
        mco.close();
    }
}

Пожалуйста, подскажите решение проблемы.


(Sergey Korol) #2

Какую версию сикули установили? Как устанавливали?
Старый сикули должен быть пропатчен после установки. В path должны быть соответствующие пути.


(Paul Manuilenko) #3

Сикули: Sikuli-X-1.0rc3 (r905)-win32 (в нем хранится и sikuli-setup.jar)
Подключал так: File → Progect structure → Libraris → + → Java → в проводнике выбрал sikuli-setup.jar
После установки не патчил - не совсем понял, что имеется ввиду…
В path прописал путь к sikuli-setup.jar - не помогло.


(Sergey Korol) #4

Значит плохо читали гайд по установке.

  • Нужно еще накатывать патч с важными багофиксами.
  • В path прописывают пути к Sikuli libs + SIKULI_HOME отдельно, если сикули их сам не добавил при установке.

А вообще, я бы не рекомендовал использовать эту древнюю версию. Уже давно в ходу SikuliX, который не завязан на не менее древней 6й джаве x86.


(Paul Manuilenko) #5

Доброго дня!
Скачал я sikuli-setup.jar, установил, проверил, в системных переменных прописались пути и к libs и в home.
Подключил в проект sikulix.jar, а затем и все jar-файлы в папке (sikuli-api-1.0.2-standalone.jar, sikulixapi.jar, sikulixapi-1.1.0-javadoc.jar, sikulixremoteserver.jar, sikulixsetup-1.1.0.jar, 1.1.0-1.jar, 1.1.0-2.jar, 1.1.0-3.jar).
Код теста не менял, теперь ошибка следующая:

[TestNG] Running:
  C:\Users\pmanuilenko\.IdeaIC13\system\temp-testng-customsuite.xml

22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.sikuli.basics.SysJNA$WinKernel32
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.TimeT
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.TimeT$timeval_customizer
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.StructIO$DefaultCustomizer
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.TimeT$timeval
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.StructObject
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.NativeObject
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type org.bridj.AbstractIntegral
22.10.2014 11:11:36 org.bridj.BridJ log
INFO: Registering type java.lang.Number
[error] ResourceLoader: loadLib: Fatal Error 109: not found: D:\Instal\auto\Sikuli\libs\VisionProxy.dll
[error] ***** Terminating SikuliX after a fatal error 109 *****
It makes no sense to continue!
If you do not have any idea about the error cause or solution, run again
with a Debug level of 3. You might paste the output to the Q&A board.
java.lang.ExceptionInInitializerError
	at org.sikuli.script.App.<clinit>(App.java:45)
	at mcopackage.mco_main_class.trySikuli(mco_main_class.java:36)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
	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:1198)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
	at org.testng.TestNG.run(TestNG.java:1031)
	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:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.lang.NullPointerException
	at org.sikuli.script.Screen.getPrimaryScreen(Screen.java:321)
	at org.sikuli.script.Sikulix.cleanUp(Sikulix.java:199)
	at org.sikuli.script.Sikulix.terminate(Sikulix.java:180)
	at org.sikuli.basics.ResourceLoader.loadLib(ResourceLoader.java:821)
	at org.sikuli.basics.FileManager.loadLibrary(FileManager.java:83)
	at org.sikuli.script.Screen.<clinit>(Screen.java:56)
	... 32 more

(Paul Manuilenko) #6

По адресу D:\Instal\auto\Sikuli\libs\ у меня нет VisionProxy.dll, только папка tessdata


(Sergey Korol) #7

Я так понял, что вы установили одну из последних версий? Там при установке должна была появляться менюшка с выбором необходимых компонентов. Вам нужно обязательно включить опцию разработки в различных IDE.


(Paul Manuilenko) #8

Включал пункт 4 - Pack3:I only want to developin Java or Jython using NetBeans, Eclipse or other IDE’s (I do not need Pack1 nor Pack2)


(Sergey Korol) #9

Тогда в установочной директории должны появиться папки lib / libs (по крайней мере в последней версии). Не помню точно, как было в предыдущих. Кстати, в процессе оно должно предлагать загружать файлы или оставлять текущие. Возможно вы что-то пропустили.


(Paul Manuilenko) #10

Да, такие папки (Lib и libs) есть, однако в libs есть только папка tessdata и нету VisionProxy.dll


(Sergey Korol) #11

Там должно быть как минимум 14 .dll файлов. Так что я все же склоняюсь к тому, что что-то было не досмотрено в процессе установки.


(Paul Manuilenko) #12

Ага, большое спасибо, попробую переустановить.


(Paul Manuilenko) #13

Огромное вам спасибо!
Да, все заработало, на работе прокси не дал скачать все необходимые файл.

  • Код, который привел не работал, нашел другой пример, все хорошо.
    Одно, не работает App.open, ищу аналог…