Автоматизация веб-приложения с помощью API Jacob и селена приводит к UnsatisfiedLinkError

Я использовал Jacob Api для загрузки файлов для автоматизации веб-приложения с помощью селена, но он выдает UnsatisfiedLinkError. Я новичок в API Джейкоба для загрузки файлов, поэтому, пожалуйста, помогите и заранее спасибо.

Пример сценария: -

public class FileUpload {
    public static void main(String a[]){
        WebDriver driver;
        try {
            System.setProperty("webdriver.chrome.driver", "/home/ionixx/workspace/IXAutomateNew1/chromedriver/chromedriver_linux");
            driver = new ChromeDriver();
            driver.manage().window().maximize();
            driver.navigate().to("http://test/admin/#/login");
            driver.findElement(By.id("email")).sendKeys("[email protected]");
            driver.findElement(By.id("pass")).sendKeys("test");
            driver.findElement(By.className("adm-button-action")).click();
            Thread.sleep(5000);
            driver.findElement(By.xpath("html/body/div[1]/app-root/div/div[2]/div/app-project/div/div/div/div[1]/div/div[1]/h4/button")).click();
            driver.findElement(By.xpath("html/body/div[1]/app-root/div/div[2]/div/app-project/div/div/div/div[1]/div/div[2]/div[3]/div[5]/div/div[2]/label[1]")).click();
            String workingDir = System.getProperty("user.dir");
            final String jacobdllarch = System.getProperty("sun.arch.data.model")
                    .contains("32") ? "jacob-1.18-x86.dll" : "jacob-1.18-x64.dll";
            String jacobdllpath = workingDir + "/" + jacobdllarch;
            File filejacob = new File(jacobdllpath);
            System.setProperty(LibraryLoader.JACOB_DLL_PATH,
                    filejacob.getAbsolutePath());
            AutoItX uploadWindow = new AutoItX();

            String filepath = workingDir + "/home/ionixx/Downloads/123.pdf";
            driver.get(filepath);
            if (uploadWindow.winWaitActive("File Upload", "", 5)) {
                if (uploadWindow.winExists("File Upload")) {
                    uploadWindow.sleep(100);
                    uploadWindow.send(filepath);
                    uploadWindow.controlClick("File Upload", "", "&Open");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Вывод:-

Starting ChromeDriver 2.24.417424 (c5c5ea873213ee72e3d0929b47482681555340c3) on port 6511
Only local connections are allowed.
Oct 09, 2017 10:56:14 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Oct 09, 2017 10:56:15 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/ionixx/workspace/Test/jacob-1.18-x64.dll which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/ionixx/workspace/Test/jacob-1.18-x64.dll: /home/ionixx/workspace/Test/jacob-1.18-x64.dll: invalid ELF header (Possible cause: endianness mismatch)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
    at java.lang.Runtime.load0(Runtime.java:809)
    at java.lang.System.load(System.java:1086)
    at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:151)
    at com.jacob.com.JacobObject.<clinit>(JacobObject.java:110)
    at autoitx4java.AutoItX.<init>(AutoItX.java:181)
    at FileUpload.main(FileUpload.java:51)

Я новичок в автоматизации селена, поэтому, пожалуйста, помогите и заранее спасибо.


person Thangaraj    schedule 09.10.2017    source источник


Ответы (1)


Мне было очень тяжело, пока я не понял это. Удачи!

Вам необходимо скопировать DLL-файлы Jacob в папку System32 (или папку SysWOW64 — зависит от типа JRE/JDK, который вы используете x86 или x64).

Copy these dll files:
jacob-1.18-x86.dll
jacob-1.18-x64.dll

а потом,

paste them in System32 folder:
    C:\Windows\System32

If it still doesn't work copy the dll files to: 
    C:\Windows\SysWOW64
person Nash N    schedule 14.12.2017
comment
Кстати, вам понадобится доступ администратора для копирования файлов в эти системные папки Windows. - person Nash N; 14.12.2017