Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Command 'findElement' was not handled by the following behaviors or plugins #119

Open
dipakkumar1225 opened this issue Jun 21, 2024 · 1 comment

Comments

@dipakkumar1225
Copy link

Configuration

Appium 2.3.0 and Java-client 9.2.3

Driver Used

plugin used

The element-wait plugin conflicts with the images plugin. After removing the element-wait plugin from the --use-plugins list, the image element is clicked properly.

[AppiumDriver@48ff] Command 'findElement' was not handled by the following behaviours or plugins, even though they were registered to handle it: ["default","images","ocr"]. The command was handled by these: ["element-wait"].

public class Main {

    private static AppiumDriverLocalService getAppiumDriverService() {
        String strDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("MMMM_dd_yyyy"));
        String strTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH_mm_ss"));
        var strReportDir = Paths.get(System.getProperty("user.dir"), strDate);

        String logFileName = String.format("Appium_Server_%s.log", strTime);
        File logFile = new File(Paths.get(strReportDir.toString(), logFileName).toString());

        return AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
                .withIPAddress("127.0.0.1")
                .usingPort(4723)
                .withArgument(() -> "--long-stacktrace")
                .withArgument(GeneralServerFlag.LOG_LEVEL, "info:debug")
                .withArgument(GeneralServerFlag.USE_DRIVERS, "uiautomator2")
                .withArgument(GeneralServerFlag.ALLOW_INSECURE, "adb_shell")
                .withArgument(GeneralServerFlag.RELAXED_SECURITY)
                .withArgument(GeneralServerFlag.USE_PLUGINS, "images, gestures, ocr")//element-wait
                .withArgument(GeneralServerFlag.SESSION_OVERRIDE)
                .withArgument(() -> "--config", new File(System.getProperty("user.dir") + File.separator + "config" + File.separator + "serverconfig.json").toString())
                .withTimeout(Duration.ofSeconds(240))
                .withLogOutput(System.err)
                .withLogFile(logFile));
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        AppiumDriverLocalService appiumDriverLocalService = getAppiumDriverService();
        AppiumDriver appiumDriver = null;
        try {
            appiumDriverLocalService.start();

            UiAutomator2Options uiAutomator2Options = new UiAutomator2Options()
                    .setAutomationName(AutomationName.ANDROID_UIAUTOMATOR2)
                    .setApp(System.getProperty("user.dir") + File.separator + "app" + File.separator + "android" + File.separator + "mda-2.0.2-23.apk")
                    .setFullReset(false)
                    .setNoReset(true)
                    .setPlatformName("android")
                    .setPlatformVersion("13")
                    .setUdid("ZD222CJSXB")
                    .setAppPackage("com.saucelabs.mydemoapp.android")
                    .setAppActivity("com.saucelabs.mydemoapp.android.view.activities.SplashActivity");

            uiAutomator2Options.setCapability("shouldTerminateApp", true);

            System.out.println("URL " + appiumDriverLocalService.getUrl());
            appiumDriver = new AndroidDriver(appiumDriverLocalService.getUrl(), uiAutomator2Options);
            System.out.println("SessionID " + appiumDriver.getSessionId());

            Thread.sleep(5000);

            byte[] navMenuByte = FileUtils.readFileToByteArray(new File(System.getProperty("user.dir") + File.separator + "image" + File.separator + "NavMenuIcon.png"));
            String navMenuEncodedString = Base64.getEncoder().encodeToString(navMenuByte);

            appiumDriver.findElement(AppiumBy.image(navMenuEncodedString)).click();

            Thread.sleep(5000);

        } finally {
            if (appiumDriver != null) {
                appiumDriver.quit();
            }
            appiumDriverLocalService.stop();
        }
    }
}
  1. Failed Log when element-wait is passed in --use-plugins
    Command 'findElement' was not handled by the following behaviours or plugins, even though they were registered to handle it: ["default","images","ocr"]. The command was handled by these: ["element-wait"]

https://gist.github.com/dipakkumar1225/207e6ce236f3f6bb27abfcfe6ca7ac1f

  1. Success Log when element-wait plugin is not used in --use-plugins
    https://gist.github.com/dipakkumar1225/c80de443415e7f15fa486cce78d94e08

Sample App
https://github.com/dipakkumar1225/AppiumWaitPluginSample

Please suggest the solution for this

@dipakkumar1225 dipakkumar1225 changed the title Plugin conflicts with the images plugin Command 'findElement' was not handled by the following behaviors or plugins Jun 21, 2024
@dipakkumar1225
Copy link
Author

any solution

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant