Appium Java TestNG Framework ›Запустите Appium программно через исключение нулевой точки Mac с файлом appium main.js

MacBook Air

Java 1.8

Appium Desktop версии 1.8.1

Привет, ребята,

Я создаю среду TestNG и хочу программно запустить свой рабочий стол appium для своих тестов. Итак, я решил создать тестовый класс java для вызова appium для меня, я думал, что закодировал его нормально, но когда я запустил его, просто чтобы проверить. Получил 'null point exception'

1. Что я сделал не так?

2. Как мне это исправить?

Вот программный код запуска appium:

package aappiumLaunchServer;

import java.io.File;

import io.appium.java_client.service.local.AppiumServiceBuilder;

public class LaunchAppium {

    private static AppiumServiceBuilder service;

    public static void main(String[] args) {
        //text
        stopAppium();
        startAppium();
        stopAppium();
    }

    public static void startAppium() {
        System.out.println("Start Appium Server");
        service = new AppiumServiceBuilder().usingDriverExecutable(new File("/usr/local/bin/node"))
        .withAppiumJS(new File ("/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js "));
        service.build().start();
        System.out.println("You can now use Appium Server");
    }

    public static void stopAppium(){
        System.out.println("Appium Server is shutting down....");
        try {
            service.build().stop();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("Your current appium session is terminated... ");
        }
        System.out.println(" Appium Server has shut down. Thank you for using Appium Server");
    }

}

Вот сообщение от затмения

appium Server is shutting down....
java.lang.NullPointerExceptionYour current appium session is terminated... 
 Appium Server has shut down. Thank you for using Appium Server
Start Appium Server

    at aappiumLaunchServer.LaunchAppium.stopAppium(LaunchAppium.java:44)
    at aappiumLaunchServer.LaunchAppium.main(LaunchAppium.java:16)
Exception in thread "main" io.appium.java_client.service.local.InvalidServerInstanceException: Invalid server instance exception has occured: The invalid appium node /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js  has been defined
    at io.appium.java_client.service.local.AppiumServiceBuilder.validateNodeStructure(AppiumServiceBuilder.java:102)
    at io.appium.java_client.service.local.AppiumServiceBuilder.checkAppiumJS(AppiumServiceBuilder.java:294)
    at io.appium.java_client.service.local.AppiumServiceBuilder.createArgs(AppiumServiceBuilder.java:389)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:342)
    at aappiumLaunchServer.LaunchAppium.startAppium(LaunchAppium.java:29)
    at aappiumLaunchServer.LaunchAppium.main(LaunchAppium.java:17)
Caused by: java.io.IOException: The node /Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js doesn't exist
    at io.appium.java_client.service.local.AppiumServiceBuilder.validateNodeStructure(AppiumServiceBuilder.java:104)
    ... 5 more

person fypnlp    schedule 23.08.2018    source источник


Ответы (3)


Просто с режимом отладки в методе startAppium попробуйте создать экземпляр файла

new File ("/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js "

Это, вероятно, покажет вам, что он не может найти файл

person Rostislav V    schedule 23.08.2018
comment
Что конкретно нужно отлаживать? Я не знаю, что мне нужно отладить, чтобы это исправить. Файл существует, потому что я смог найти его и скопировать в терминал, который затем скопировал в тестовый класс. Так что я не знаю, почему он говорит, что не может его найти, потому что он существует. - person fypnlp; 23.08.2018
comment
Вы можете разместить точку останова в своем коде и остановиться на ней, чтобы посмотреть, сможете ли вы создать экземпляр файла. - person Rostislav V; 23.08.2018
comment
Добавьте эти строки в начало кода и отметьте File file = new File (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js); syso (file.getPath ()); syso (file.getAbsolutePath ()); syso (file.getCanonicalPath ()); - person Amit Jain; 23.08.2018

Похоже, вы пытаетесь использовать файл JS main.js из Appium.app вместо установки appium с помощью узла, и вы должны найти свой файл в
Appium_MAIN_JS = System.getenv (APPIUM_HOME) + "/ node_modules / appium / build / lib / main.js "(определите APPIUM_HOME в вашем bash_profile) Возможно, ваш код не имеет доступа к Appium.app (я предполагаю, что он находится в папке приложения)

а затем вы можете вызвать .buildService (новый AppiumServiceBuilder (). withAppiumJS (новый файл (Appium_MAIN_JS)))

person iamMobile    schedule 24.08.2018

Если вы установили NodeJS из установки для Windows и \ AppData \ Roaming \ npm пуст, вам следует открыть Windows PowerShell и выполнить команду: npm install -g appium

person Krzysztof Walczewski    schedule 13.11.2020
comment
спасибо я попробую это - person fypnlp; 06.12.2020