Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用appium处理已安装的应用程序?_Java_Android_Appium - Fatal编程技术网

Java 如何使用appium处理已安装的应用程序?

Java 如何使用appium处理已安装的应用程序?,java,android,appium,Java,Android,Appium,前提条件:已通过google play在设备中安装应用程序 当我尝试在设备中自动化已经安装的应用程序时,每次它都会打开google浏览器而不是打开应用程序 如果有人告诉我如何打开应用程序,我将在appium中打开一个新的应用程序 代码如下: public class appium { private static AndroidDriver driver; public static void main(String[] args) throws InterruptedException

前提条件:已通过google play在设备中安装应用程序

当我尝试在设备中自动化已经安装的应用程序时,每次它都会打开google浏览器而不是打开应用程序

如果有人告诉我如何打开应用程序,我将在appium中打开一个新的应用程序

代码如下:

public class appium {
private static AndroidDriver driver;
    public static void main(String[] args) throws InterruptedException, IOException {

        File appDir = new File("D:/setup/android-sdk_r24.4.1-windows/android-sdk-windows");
        File app = new File(appDir, "ab.java.programming-1.apk");
        System.out.println("app Dir.--->"+app);     

        DesiredCapabilities capabilities = new DesiredCapabilities();

        // Name of mobile web browser to automate. It should be an empty string, as we are automation an app
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        // Name of the OS: Android, iOS or FirefoxOS
        capabilities.setCapability("platformName", "Android");
        // Device name:  – I am using Galaxy
        capabilities.setCapability("deviceName", "Galaxy");
        // Mobile OS version –  My device is running Android 4.4.4
        capabilities.setCapability("platformVersion", "4.4.4");
        // An absolute local path to the APK file
        //capabilities.setCapability("app", app.getCanonicalPath());

        // Java package of the tested Android app
        capabilities.setCapability("appPackage", "ab.java.programming");

        // An activity name for the Android activity you want to run from your package.
        capabilities.setCapability("appActivity", ".MainActivity");

//       Constructor to initialize driver object with new Url and Capabilities
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

        driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);
        Thread.sleep(10000);
        driver.quit();

    }

    }

您需要设置指向apk所在位置的功能

capabilities.setCapability("app", app.getAbsolutePath());
并确保选中appium窗口中的
无重置
选项,使其不会重新安装apk

编辑:

下面是我如何运行位于桌面上的应用程序

        File app = new File("app location which is in the desktop"); //install
        DesiredCapabilities capabilities = new DesiredCapabilities(); 

        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        capabilities.setCapability("deviceName", "LenovoB6000-HV");
        capabilities.setCapability("platformVersion", "5.0.2");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("app", app.getAbsolutePath());
        capabilities.setCapability("appPackage", "package name");
        capabilities.setCapability("appActivity", "Activity name");
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        Thread.sleep(10000);//wait before closing the app
            driver.quit();

我已经从google play安装了.apk并将其保存在SDCard上,正如您所说,我已经设置了“getAbsolutePath()”的功能,并在appium窗口中选中了“No Rest”选项。但每当我首先运行项目时,它会安装一个构建名称“Unlock”,然后打开chrome浏览器。但我需要做的是“打开已经安装在设备中的应用程序”,等待它完成。解锁是appium在您的设备上运行的必要条件。您是否因为没有新命令而等待appium日志关闭?是的,在appium窗口上完成执行后,它也会生成日志。此外,完成后退出驱动程序。但应用程序并没有打开。如果是这样的话。我看不出有什么不对劲。我唯一查不到的是你的apk的位置。你能试着把它放在类似桌面的地方吗?我的应用程序位置是:“本地存储/设备存储/安卓/数据”,现在你能帮我吗?