Просмотр директорий устройств Android с помощью Appium

Вопрос или проблема

Мне нужно получить доступ к файлам моего устройства Android через Appium.

Однако после инициализации AndroidDriver и запуска приложения в Android Studio его текущая директория System.getProperty("user.dir") по-прежнему является папкой с кодом проекта на моем компьютере. Инструкция вызывается под @Test.

Я неправильно проверил текущее местоположение на устройстве Android? Какие функции я мог бы использовать для доступа к Documents/Download/Data и т.д.? Где мы находимся, когда входим в @Test после инициализации устройства?

Я пишу на Java и использую Maven.

Ответ или решение

Чтобы получить доступ к файловой системе вашего Android-устройства с использованием Appium, прежде всего необходимо понимать, что метод System.getProperty("user.dir") возвращает каталог проекта на вашей локальной машине, а не директорию устройства. Это нормальное поведение, так как тесты выполняются в контексте вашей среды разработки.

Для того чтобы взаимодействовать с файлами на Android-устройстве, вам нужно использовать ADB (Android Debug Bridge), который предоставляет доступ к файловой системе устройства. Ниже приведены шаги и пример кода на Java, который может помочь вам получить доступ к директории Documents, Download или Data на вашем Android-устройстве.

Шаги для доступа к файловой системе Android с использованием Appium

  1. Убедитесь, что у вас установлен ADB: Обычно он входит в состав Android SDK. Убедитесь, что он настроен и доступен в PATH вашего окружения.

  2. Инициализируйте улучшенные возможности драйвера: Сначала вам нужно будет инициализировать AndroidDriver.

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

public class AppiumExample {
    private AndroidDriver driver;

    public void setup() throws Exception {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "YourDeviceName");
        capabilities.setCapability(MobileCapabilityType.APP, "path/to/your/app.apk");

        // Инициализация драйвера
        driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
    }
}
  1. Используйте ADB для доступа к файлам: После инициализации драйвера, в тесте вы можете использовать команды ADB для получения доступа к файловой системе.

Пример получения списка файлов в директории Downloads:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public void accessAndroidFiles() {
    try {
        // Команда ADB для получения списка файлов в папке Download
        Process process = Runtime.getRuntime().exec("adb shell ls /sdcard/Download/");
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;

        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }

        process.waitFor();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Важно помнить

  • Необходимо установить ADB и иметь разрешения для доступа к файловой системе устройства. Пожалуйста, убедитесь, что ваше устройство подключено и режим отладки по USB включен.

  • Коды доступа могут отличаться в зависимости от версии Android и конкретных настроек устройства. На некоторых устройствах для доступа к определенным директориям могут потребоваться дополнительные разрешения.

  • Вы можете использовать разные команды ADB для взаимодействия с файлами в других директориях, таких как Documents или Data, в зависимости от ваших потребностей.

Где мы находимся в контексте @Test

Когда вы находитесь в методе, помеченном как @Test, вы уже в контексте фрейма тестирования (например, TestNG или JUnit). Это значит, что вы можете использовать возможности вашего тестового фрейма для управления жизненным циклом ваших тестов (например, инициализация и завершение тестов). @BeforeMethod или @BeforeClass может быть хорошим местом для настройки вашего драйвера.

Заключение

Таким образом, вы не сможете напрямую получить доступ к файловой системе Android через свойства Java, но с помощью ADB вы сможете выполнять команды и получать доступ к нужным директориям. Убедитесь, что настроили все правильно, и используйте соответствующие команды ADB для выполнения необходимых операций с файлами.

Оцените материал
Добавить комментарий

Капча загружается...