移动应用测试自动化

Mobile application testing Automation

提问人:siva 提问时间:11/14/2023 更新时间:11/14/2023 访问量:28

问:

在移动应用程序测试中,我有一个用于下载 APK 的示例 URL。我需要使用下载的APK并在模拟器中运行它。我在 Eclipse 编辑器中使用 Java Selenium,我也在使用 Appium 服务器。您能否提供任何模型脚本以供参考?

任何模型脚本或任何执行方式。

Java Selenium-WebDriver 自动化 移动应用测试

评论

0赞 pburgr 11/14/2023
看看这个 katalon.com/mobile-testing

答:

1赞 Abhishek Dhoundiyal 11/14/2023 #1

要自动执行从 URL 下载 APK 文件的过程,并使用带有 Java Selenium 的 Appium 将其安装在模拟器上,您可以按照以下步骤操作。确保您设置了必要的依赖项。

逻辑:

  • 为设备设置功能。
  • 将 URL 和目录传递给该方法。它将下载应用程序并返回保存的文件路径。getDownloadFilePath
  • 将返回路径传递给caps.setCapability(MobileCapabilityType.APP, appPath);

下面是一个基本脚本,可帮助您入门:

public static void main(String[] args) throws Exception {
        // Set the desired capabilities for the Android emulator
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "12.0");
        caps.setCapability(MobileCapabilityType.DEVICE_NAME, "XXXXXXX");
        caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "uiautomator2");
        //Change your url accordingly
        String appPath = getDownloadFilePath("https://raw.githubusercontent.com/markushi/android-ui/master/example.apk"
                , System.getProperty("user.dir")+"/");
        caps.setCapability(MobileCapabilityType.APP, appPath);

        // Initialize the Appium driver
        AppiumDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723"), caps);
        driver.closeApp();
        driver.quit();
    }


    /**
     * 
     * @param fileURL
     * @param saveDir
     * @return
     * @throws IOException
     */
    public static String getDownloadFilePath(String fileURL, String saveDir) throws IOException {
        URL url = new URL(fileURL);
        try (InputStream in = url.openStream()) {
            Path filePath = Path.of(saveDir, "sample.apk");
            Files.copy(in, filePath, StandardCopyOption.REPLACE_EXISTING);
            System.out.println("File downloaded to: " + filePath.toAbsolutePath());
            return  filePath.toAbsolutePath().toString();
        }catch (IOException ex){
            ex.printStackTrace();
            return  "";
        }
    }