-1

Not able to start appium from code made a function and called before desired capability, post desired capability. Getting error while running below code: C:\Users\Ritesh Mittal\AppData\Roaming\npm\node_modules\appium\lib\appium.js:1 import _ from 'lodash'; ^^^^^^

SyntaxError: Cannot use import statement outside a module at Object.compileFunction (node:vm:352:18)

//Option 1
public static void  runAppiumService(String portNumber) {
            
            //Build parameters for appium server:
            AppiumServiceBuilder appiumServiceBuilder = new AppiumServiceBuilder();
            appiumServiceBuilder.usingPort(Integer.parseInt(portNumber))
                    .withIPAddress("127.0.0.1")
                    .withAppiumJS(new File("C:\\Users\\Ritesh Mittal\\AppData\\Roaming\\npm\\node_modules\\appium\\lib\\appium.js"))
                    .withArgument(GeneralServerFlag.SESSION_OVERRIDE)
                    .withLogFile(new File(System.getProperty("user.dir") + "/target/resources/appium_server_logs" + Thread.currentThread().getId()));
            AppiumDriverLocalService service = AppiumDriverLocalService.buildService(appiumServiceBuilder);
            service.start();
    }
//Option 2
    DesiredCapabilities dc = new DesiredCapabilities();
                        dc.setCapability(MobileCapabilityType.DEVICE_NAME, deviceName);
                        //dc.setCapability(MobileCapabilityType.PLATFORM_VERSION,platformVersion);
                        dc.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
                        dc.setCapability(MobileCapabilityType.APP, System.getProperty("user.dir")+"/src/test/resources/apps/CRMNextNative 6.29.0-release_screenshot_enabled.apk");
                        dc.setCapability("automationName","UiAutomator2");
                        dc.setCapability("appPackage", "com.crmnextmobile.crmnextofflineplay");
                        dc.setCapability("appActivity", "com.crmnextmobile.crmnextofflineplay.qr.QrScannerActivity");
                        dc.setCapability("enforceAppInsall", true);
                        URL url = new URL("http://127.0.0.1:"+portNumber+"/wd/hub");
    
                    
                    AppiumDriverLocalService service;
                       service = AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
                               .usingPort(Integer.parseInt(portNumber))
                               .usingDriverExecutable(new File("C:\\Program Files\\nodejs\\node.exe"))
                               .withAppiumJS(new File("C:\\Users\\Ritesh Mittal\\AppData\\Roaming\\npm\\node_modules\\appium\\lib\\appium.js"))
                               .withArgument(GeneralServerFlag.RELAXED_SECURITY)
                               .withArgument(GeneralServerFlag.SESSION_OVERRIDE)
                               .withArgument(GeneralServerFlag.LOG_LEVEL, "error")
                               .withCapabilities(dc));
                        service.start();
                        logger.info("Appium started ......");
                        Thread.sleep(10000);
                    driver = new AppiumDriver(url,dc);              
                    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
                    System.out.println("CRMNext automation start..");
mittalri
  • 21
  • 3
  • 7

2 Answers2

0

please try this code:

public void startServer() throws IOException, InterruptedException {

    Properties prop = new Properties();
    
    InputStream input = null;

    input = getClass().getClassLoader().getResourceAsStream("config.properties");
    
    try {
        prop.load(input);
    } catch (IOException e) {

        e.printStackTrace();

    }

    Map<String, String> env = new HashMap<>(System.getenv());

    env.put("PATH", prop.getProperty("Local_Path") + env.get("PATH"));
    env.put("ANDROID_HOME", prop.getProperty("Android_Home"));

    int port = Integer.parseInt(prop.getProperty("port"));
    
    System.out.println("port--> "+port);

    service = AppiumDriverLocalService.buildService(
            new AppiumServiceBuilder().usingDriverExecutable(new File(prop.getProperty("DriverExecutable")))
                    .withAppiumJS(new File(prop.getProperty("AppiumJS"))).withIPAddress(prop.getProperty("IP"))
                    .usingPort(port).withLogFile(new File("AppiumLog.text")).withEnvironment(env));

    service.start();

    Thread.sleep(20000);

}
  • tried.. but not working – mittalri Jan 31 '22 at 10:53
  • can you find main.js in folder \AppData\Roaming\npm\node_modules\appium\lib or if it is not present rename appium.js to main.js – rakeshsahu59 Jan 31 '22 at 11:15
  • @rajeshsahu59 main.js is present. it seems, I need to convert appium.js to appium.mjs – mittalri Feb 01 '22 at 13:30
  • Can you reinstall Appium from npm package, usually main.js gets saved in node_modules/appium/build/lib/main.js after installation, in your case it is appium.js which is causing problem. I believe installing current Appium version may solve this issue. – rakeshsahu59 Feb 01 '22 at 14:39
  • I did reinstall Appium. main.js and appium.js both are present. error is still same. – mittalri Feb 02 '22 at 12:43
  • Manually delete appium js and can you check if Android home is set correctly? – rakeshsahu59 Feb 02 '22 at 16:14
  • 0 I solved it. I was doing two mistakes Appium Path was not correct. Incorrect path was builder.withAppiumJS(new File("C:\Users\Ritesh Mittal\AppData\Roaming\npm\node_modules\appium\lib\appium.js")); corrected: builder.withAppiumJS(new File("C:\Users\Ritesh Mittal\AppData\Roaming\npm\node_modules\appium")); added arguments builder.withArgument(() -> "--base-path", "/wd/"); – mittalri Feb 03 '22 at 04:46
0

I solved it. I was doing two mistakes

  1. Appium Path was not correct. Incorrect path was builder.withAppiumJS(new File("C:\Users\Ritesh Mittal\AppData\Roaming\npm\node_modules\appium\lib\appium.js")); corrected: builder.withAppiumJS(new File("C:\Users\Ritesh Mittal\AppData\Roaming\npm\node_modules\appium"));

  2. added arguments builder.withArgument(() -> "--base-path", "/wd/");

mittalri
  • 21
  • 3
  • 7