Статья | Документация C# ZennoDroid API (Часть 1)

  • Автор темы Автор темы Dmitriy Ka
  • Дата начала Дата начала

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
949
Реакции
734
Баллы
93
Внимание! Нашел ошибку или неточность? Напиши в ЛС - исправлю!

Всем привет!
Добро пожаловать в первую часть документации по работе с C# ZennoDroid. В этом материале я постарался собрать основную информацию и подробно описать ключевые методы работы с объектами ZennoDroid, а так же написал C# примеры. Цель этой документации — помочь разработчикам эффективно использовать возможности C# API ZennoDroid для своих шаблонов.

Основной объект для работы с С# ZennoDroid:

IDroidInstanceAPI DroidInstance - данный объект является основным интерфейсом для работы с ZennoDroid API. Он представляет собой контейнер для объектов интерфейсов, обеспечивающих взаимодействие с различными аспектами Android, такими как управление приложениями, ввод данных, настройки и т.д.

С его помощью мы получаем доступ к необходимому объекту взаимодействия и использовать его методы и свойства для работы с API.

В него входят такие объекты:

  • IDroidScreenAPI Screen
  • IFridaDeviceAPI FridaDevice
  • ISqlite3API Sqlite3

Полезные материалы:
 
Последнее редактирование:
Интерфейс IDroidInfoAPI Info

IDroidInfoAPI Info
- предоставляет доступ к информации о текущем устройстве. Этот интерфейс используется для получения различных данных о подключенном устройстве после его выбора и подключения через методы интерфейса IDroidActionAPI Action.

Свойства:

int Index { get; }
- индекс устройства.
Дублирует информацию "Индекс" из окна "Менеджер устройств"

string Title { get; } - название устройства.
Дублирует информацию "Название" из окна "Менеджер устройств"

string Name { get; } - имя устройства(adb).
Имя ADB устройства, дублирует информацию "Устройство" из окна "Менеджер устройств"

int UiPort { get; } - порт отображаемый в окне инстанса.
Актуально только при выполнении шаблона в ZennoDroid.

string AddressPort { get; } - адрес подключения через ADB.
Совпадает со свойством Name.

Примеры:
Развернуть Свернуть Копировать
var info = instance.DroidInstance.Info;

int index = info.Index;
string title = info.Title;
string Name = info.Name;
int uiPort = info.UiPort;
string addressPort = info.AddressPort;
 
Последнее редактирование:
  • Спасибо
Реакции: Hannes
Интерфейс IDroidActionAPI Action

IDroidActionAPI Action
- предоставляет доступ к управлению устройствами, что включает выбор устройства, запуск и остановку его работы. Этот интерфейс необходим для работы с физическими или виртуальными устройствами, позволяя пользователю взаимодействовать с ними. Сначала мы выбираем устройство для работы, потом можем его запустить или остановить.

Реализует кубик Действия с устройством для ZD и ZDE

Методы:

void SelectByIndex(int index)
- выбрать устройство по индексу.
Параметры:
int index - передаем индекс устройства, которое хотим выбрать.

Примеры:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectByIndex(0);


void SelectByName(string name) - выбрать устройство по имени ADB.
Параметры:
string name - передаем имя ADB устройства, которое хотим выбрать.

Примеры:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectByName("adbName");


void SelectByTitle(string title) - выбрать устройство по названию.
Параметры:
string title - передаем название устройства, которое хотим выбрать.

Примеры:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectByTitle("titleName");


void SelectRandom() - выбрать случайное устройство.

Примеры:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectRandom();


void SelectRandom(string mask) - выбираем случайное устройство по маске. Название содержит маску.
(уточнить) как работает маска!
Параметры:
string mask - передаем значение нашей маски.

C#:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectRandom("memu");


void Start() - запускаем выбранное устройство.

C#:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectByTitle("Name"); // Выбираем устройство.
action.Start(); // Запускаем.


void Start(bool applyProfile) - запускаем выбранное устройство с применением данных из нашего профиля. Данные устройства (разрешение экрана, CPU и т.д.) будут браться из профиля ZennoDroid (вкладка "Текущий профиль").
Параметры:
bool applyProfile - передаем True, если хотим использовать данные из профиля ZennoDroid.

Перегрузка:
string captureScreenMethod - передаем тип захвата изображения. Варианты: "h264", "mjpeg", "off"


Примеры:
Развернуть Свернуть Копировать
//#1
var action = instance.DroidInstance.Action;
action.SelectByTitle("Name"); // Выбираем устройство.
action.Start(true); // Запускаем с данными из профиля ZD

//#2
var action = instance.DroidInstance.Action;
action.SelectByTitle("Name"); // Выбираем устройство.
action.Start(true, "mjpeg"); // Запускаем c captureScreenMethod


void Stop() - останавливаем выбранное устройство.

Примеры:
Развернуть Свернуть Копировать
var action = instance.DroidInstance.Action;
action.SelectByTitle("Name");
action.Stop();
 
Последнее редактирование:
  • Спасибо
Реакции: Hannes
Интерфейс IDroidAppAPI App

IDroidAppAPI App
- предоставляет доступ к управлению приложениями на устройстве. С помощью этого интерфейса можно устанавливать, удалять, открывать и закрывать приложения, а также выполнять другие действия, связанные с управлением установленными приложениями. Методам часто требуется передача параметра packageName имени приложения, что помогает идентифицировать и управлять нужным приложением. Для поиска нужного имени приложения можно использовать инструмент ZD "Установленные приложения".

Реализует кубик Действия с приложениями для ZD и ZDE

Свойства:

string Top { get; }
- имя открытого приложения.

uint TopPid { get; } - уникальный идентификатор текущего процесса Android.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

string top = app.Top;
uint TopPid = app.TopPid;


Методы:

void Open(string packageName)
- открыть приложение.
Параметры:
string packageName - имя приложения, для работы метода.

Перегрузка:
string activityName - активити приложения, для запуска.

Примеры:
Развернуть Свернуть Копировать
//#1
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Open(packageName); // Открыть приложение

//#2
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var activity = ".MainActivity"; // Активити хрома.(Не рабочий пример!)
app.Open(packageName, activity); // Открыть приложение


void OpenUrl(string url, string packageName) - открыть приложение с нужным URL.
Параметры:
string url -
url для запуска.
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var url = "http://ya.ru";
app.OpenUrl(url, packageName); // Открыть Chrome и зайти на сайт ya.ru


void Close(string packageName) - закрыть приложение.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Close(packageName); // Закрыть приложение


void CloseAll() - закрыть все приложения.

C#:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

app.CloseAll(); // Закрыть все приложения


void Clean(string packageName) - очистить данные приложения. Получаем чистое приложение, как после установки.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Clean(packageName); // Очистить данные приложения


void CleanCache(string packageName) - очистить Кэш приложения.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.CleanCache(packageName); // Очистить кэш приложения


void InstallApk(string path) - установить приложение APK.
Параметры:
string path - путь к APK файлу.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var pathApk = @"\chrome.apk"; // Путь приложения
app.InstallApk(pathApk); // Установить приложение


bool IsInstalled(string packageName) - установлено ли приложение.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var isApk = app.IsInstalled(packageName); // Проверка установлено ли приложение

if (!isApk) // Если нет, то установим
{
    var pathApk = @"\chrome.apk"; // Путь приложения
    app.InstallApk(pathApk); // Установить приложение
}


void Delete(string packageName) - удалить приложение.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.Delete(packageName); // Удалить приложение


string Uid(string packageName) получить Uid приложения.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var uid = app.Uid(packageName); // Получить uid приложения


string DataDir(string packageName) - получить директорию хранения данных приложения на устройстве.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var directory = app.DataDir(packageName); // Получить директорию хранения данных приложения.


string[] GetListPackages() - получить массив всех приложений на устройстве.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packages = app.GetListPackages(); // Получить массив всех установленных приложений


string[] GetListSystemPackages() - получить массив всех системных приложений на устройстве.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packages = app.GetListSystemPackages(); // Получить массив всех системных приложений


string[] GetListUserPackages() - получить массив всех пользовательских приложений на устройстве.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packages = app.GetListUserPackages(); // Получить массив всех пользовательских приложений


string GetAllNotifications() - получить все уведомления. Получаем в формате Json.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var json = app.GetAllNotifications(); // Получить все уведомления
project.Json.FromString(json); // Обработать Json


string GetAppNotifications(string packageName) получить уведомления приложения. Получаем в формате Json.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var json = app.GetAppNotifications(packageName); // Получить все уведомления
project.Json.FromString(json); // Обработать Json


void ClearAllNotifications() - очистить все уведомления.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

app.ClearAllNotifications(); // Очистить все уведомления


void ClearAppNotifications(string packageName) очистить уведомления приложения.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
app.ClearAppNotifications(packageName); // Очистить уведомления приложения


void BackupAppData(string packageName, string pathToBackup) - сделать резервную копию данных приложения.
Параметры:
string packageName - имя приложения, для работы метода.
string pathToBackup - путь куда сохранить копию.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var pathSave = @"/dir/bakups/name_bakup"; // Путь куда сохранить бэкап
app.BackupAppData(packageName, pathSave); // Сделать бэкап


void RestoreAppData(string packageName, string pathToBackup) - восстановить данные приложения из резервной копии.
Параметры:
string packageName - имя приложения, для работы метода.
string pathToBackup - путь к резервной копии.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var pathLoad = @"/dir/bakups/name_bakup"; // Путь хранения бэкапа
app.RestoreAppData(packageName, pathLoad); // Загрузить бэкап


string GetCookie(string packageName) - получить куки приложения.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var cookies = app.GetCookie(packageName); // Получить куки приложения


string GetCookiePath(string packageName) - получить путь хранения куки приложения.
Параметры:
string packageName - имя приложения, для работы метода.

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var pathCookie = app.GetCookiePath(packageName); // Получить путь хранения куки


bool RemoveAccount(string name, string type) - удалить аккаунт. Доп информация.
Параметры:
string name - имя аккаунта.
string type - тип аккаунта.

C#:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var appName = "ru.yandex.mail";
var typeName = "com.yandex.passport";
app.RemoveAccount(appName, typeName); // Удалить аккаунт


bool AddAccount(string name, string type, string password) - добавить аккаунт.
Параметры:
string name - имя аккаунта.
string type - тип аккаунта.
string password - пароль аккаунта.

УТОЧНИТЬ ПРИМЕР!


string GetAccounts(string packageName)
- получить аккаунты. Получаем в формате Json.
Параметры:
string packageName - имя приложения, для работы метода.

Перегрузка:
string type - тип аккаунта

Примеры:
Развернуть Свернуть Копировать
var app = instance.DroidInstance.App;

var packageName = "com.google.chrome"; // Имя приложения
var json = app.GetAccounts(packageName); // Получить аккаунты приложения
 
Последнее редактирование:
  • Спасибо
Реакции: Hannes
Интерфейс IDroidInputAPI Input

IDroidInputAPI Input
- предоставляет доступ к эмуляции действий на устройстве, что позволяет взаимодействовать с интерфейсом и элементами приложения. Этот интерфейс используется для выполнения различных пользовательских действий, таких как свайпы, тапы, ввод текста, а также для выполнения команд ADB Shell (Консольные команды, читать подробней)

Методы:

void Swipe(int x1, int y1, int x2, int y2)
- свайп по экрану от точки до точки.
Параметры:
int x1, int y1
- координаты первой точки.
int x2, int y2 - координаты второй точки.

Перегрузка:
int duration
- продолжительность свайпа (скорость).

Примеры:
Развернуть Свернуть Копировать
//#1
var input = instance.DroidInstance.Input;

Point start = new Point() { X = 100, Y = 500 }; // Точка старта
Point end = new Point() { X = 200, Y = 200 }; // Точка конца
input.Swipe(start.X, start.Y, end.X, end.Y); // Сделать свайп по координатам

//#2
var duration = 100;
input.Swipe(start.X, start.Y, end.X, end.Y, duration); // Сделать свайп по координатам с настройкой скорости движения


void SwipeCurved(int x1, int y1, int x2, int y2, int duration) - изогнутый свайп от точки до точки.
Параметры:
int x1, int y1
- координаты первой точки.
int x2, int y2 - координаты второй точки.
int duration - продолжительность свайпа (скорость).

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

Point start = new Point() { X = 100, Y = 500 }; // Точка старта
Point end = new Point() { X = 200, Y = 200 }; // Точка конца
var duration = 100; // скорость свайпа
input.SwipeCurved(start.X, start.Y, end.X, end.Y, duration); // Изогнутый свайп


void SwipeCurved(int x1, int y1, int xPivot, int yPivot, int x2, int y2, int duration) - изогнутый свайп с настройкой изгиба.
Параметры:
int x1, int y1
- координаты первой точки.
int xPivot - точка вращения по Х.
int yPivot - точка вращения по Y.
int x2, int y2 - координаты второй точки.
int duration - продолжительность свайпа (скорость).

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

Point start = new Point() { X = 100, Y = 500 }; // Точка старта
Point end = new Point() { X = 200, Y = 200 }; // Точка конца
var duration = 100; // Скорость свайпа
var xPivot = 200; // Настройка изгиба по X
var yPivot = 700; // Настройка изгиба по Y
input.SwipeCurved(start.X, start.Y, xPivot, yPivot, end.X, end.Y, duration); // Изогнутый свайп c настройкой изгиба


void Tap(int x, int y) - нажатие по координатам.
Параметры:
int x
- координаты точки по Х.
int y - координаты точки по Y.

Перегрузка:
int duration
- продолжительность нажатия.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

Point point = new Point() { X = 100, Y = 500 }; // Точка
input.Tap(point.X, point.Y); // Нажатие по координатам

var duration = 100; // Продолжительность нажатия
input.Tap(point.X, point.Y, duration); // Долгое нажатие по координатам


void Touch(int xMin, int yMin, int xMax, int yMax, bool longPress, string clickDistributionType) - нажатие по координатам с доп. настройками.
Параметры:
int xMin, int yMin
- координаты нижней точки.
int xMax, int yMax - координаты верхней точки.
bool longPress - использовать долгое нажатие
string clickDistributionType - тип клика: "Normal" и "Random".

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

Point start = new Point() { X = 100, Y = 500 }; // Точка старта
Point end = new Point() { X = 200, Y = 200 }; // Точка конца

input.Touch(start.X, start.Y, end.X, end.Y, false, "Random"); // Нажатие по координатам с настройками


void LongTapAndSwipe(int x1, int y1, int x2, int y2) - долгое нажатие и свайп по экрану.
Параметры:
int x1, int y1
- координаты первой точки.
int x2, int y2 - координаты второй точки.

Перегрузка:
int duration
- продолжительность свайпа (скорость).

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

Point start = new Point() { X = 100, Y = 500 }; // Точка старта
Point end = new Point() { X = 200, Y = 200 }; // Точка конца

input.LongTapAndSwipe(start.X, start.Y, end.X, end.Y); // долгое нажатие и свайп по экрану

var duration = 100; // Продолжительность нажатия
input.LongTapAndSwipe(start.X, start.Y, end.X, end.Y, duration); // долгое нажатие и свайп по экрану, с настройкой скорости свайпа


void SendText(string text) - ввести текст в поле.
Параметры:
string text
- текст ввода.

Перегрузка:
int latency - задержка между вводом символов.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

var text = "Привет мир!";
input.SendText(text); // Вводим текст в поле элемента

var latency = 100; // Скорость набора текста
input.SendText(text, latency); // Вводим текст с настройкой скорости ввода


void SendKeyCode(KeyCode keyCode) - ввести KeyCode (спецсимволов).
Параметры:
KeyCode keyCode
- код спецсимвола.

Перегрузка:
int keyCode -
числовой код спецсимвола.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

input.SendKeyCode(KeyCode.KEYCODE_HOME); //Отправка спецсимволов (по названию)
input.SendKeyCode(3); //Отправка спецсимволов(по числовому значению)


void ClearText() - очистить текст в поле.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

input.ClearText(); // очистить текст элемента


string Shell(string command) - выполнить команду ADB Shell(консольные команды).
Параметры:
string command
- команда ADB.

Перегрузка:
int timeout
- время ожидания команды.
bool checkconnect - проверка подключения к устройству.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

var adb = "dumpsys activity activities | grep ResumedActivity"; // Команда для получения текущей активити
var activity = input.Shell(adb); //Получить текущую активити

var adb = "am start -n com.example.app/.MainActivity"; // Команда запустить приложение с активити
input.Shell(adb, 1000); //Запускаем приложение с ожиданием выполнения

var adb = "reboot"; // Команда перезагрузки
input.Shell(adb, 1000, true); // Выполнить команду перезагрузки c ожиданием выполнения и проверкой подключения adb


string GetClipboard() - получить текст из Буфера обмена.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

var text = input.GetClipboard(); // Получить текст из буфера обмена


void SetClipboard(string text) - поместить текст в Буфер обмена.
Параметры:
string text - текс для буфера обмена.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

var text = "Привет мир!";
input.SetClipboard(text); // Поместить текст в буфер обмена

void ZoomIn() - приблизить экран.
Перегрузка:
int centerX - центр точки по Х.
int centerY - центр точки по Y.
double ratio - значение приближения.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

input.ZoomIn(); // Приблизить
input.ZoomIn(-1, -1, 1.0); // Приблизить с настройкой


void ZoomOut() - отдалить экран.
Перегрузка:
int centerX - центр точки по Х.
int centerY - центр точки по Y.
double ratio - значение приближения.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

input.ZoomOut(); // Отдалить
input.ZoomOut(-1, -1, 1.0); // Отдалить с настройкой


void FingerDown(int x, int y) - эмуляция нажать пальцем по координате.
Параметры:
int x
- координаты точки по Х.
int y - координаты точки по Y.

Перегрузка:
int fingerId - ID пальца.(уточнить)

#####

void FingerUp(int x, int y) - эмуляция отпустить нажатие палацем по координате.
Параметры:
int x
- координаты точки по Х.
int y - координаты точки по Y.

Перегрузка:
int fingerId - ID пальца.(уточнить)

#####

void FingerMove(int x, int y) - эмуляция вождение палацем не отрывая от экрана по координате.
Параметры:
int x
- координаты точки по Х.
int y - координаты точки по Y.

Перегрузка:
int fingerId - ID пальца.(уточнить)

#####

void FreeMove(string json, double speed) - вождение по экрану из карте действий JSON.(уточнить)
Параметры:
string json - карта вождения в формате Json.
double speed - скорость выполнения.

#####

void SendSmsMessage(string phone, string message) - эмуляция отправки SMS на устройство.
Параметры:
string phone - телефон который должен отправить SMS.
string message - текст который должен поступить в SMS.

Примеры:
Развернуть Свернуть Копировать
var input = instance.DroidInstance.Input;

var phone = "+79998007060";
var message = "Привет!";
input.SendSmsMessage(phone, message); // Эмуляция входящего SMS сообщения
 
Последнее редактирование:
  • Спасибо
Реакции: Sergodjan и Hannes
Интерфейс IAppiumDriverAPI AppiumDriver

IAppiumDriverAPI AppiumDriver
- предоставляет методы для поиска элементов в Android-приложениях и взаимодействия с ними. Интерфейс является ключевым инструментом автоматизации взаимодействия с пользовательским интерфейсом через ZennoDroid. Если элемент найден возвращает объект IAndroidElementAPI, если нет null.

Методы:

IAndroidElementAPI ActiveElement()
- получаем элемент в фокусе.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.ActiveElement(); // Получить элемент в фокусе


IAndroidElementAPI FindElementByAccessibilityId(string id) - поиск элемента по свойству content-desc.
Параметры:
string id - значение свойства content-desc.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByAccessibilityId("Chrome search"); // Найти элемент по свойству content-desc
if (de == null)
    throw new Exception("Элемент не найден");

de.Click(); // Кликнуть по элементу


IAndroidElementAPI FindElementByClassName(string className) - поиск элемента по свойству class.
Параметры:
string className - значение свойства class.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByClassName("android.widget.EditText"); // Найти элемент по имени класса
if (de == null)
    throw new Exception("Элемент не найден");

de.SendText("Привет мир!"); // Написать текс в поле элемента


IAndroidElementAPI FindElementById(string id) - поиск элемента по свойству resource-id.
Параметры:
string id - значение свойства resource-id.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementById("com.android.chrome:id/title"); ; // Найти элемент по свойству resource-id
if (de == null)
    throw new Exception("Элемент не найден");

var text = de.Text; // Получить текст элемента


IAndroidElementAPI FindElementByXPath(string xpath) - поиск элемента по xPath.
Параметры:
string xpath - xPath для поиска элемента.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByXPath("//*[@text=\"Display\"]"); // Найти элемент по xPath
if (de == null)
    throw new Exception("Элемент не найден");

de.Click(); // Кликнуть по элементу


IAndroidElementAPI FindElementByUiAutomator(string uiSelector) - поиск элемента через UiSelector.
Параметры:
string uiSelector - uiSelector для поиска элемента.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByUiAutomator("new UiSelector().textContains(\"screen\")"); // Найти элемент по UiSelector
if (de == null)
    throw new Exception("Элемент не найден");

de.Click(); // Кликнуть по элементу


IAndroidElementAPI[] FindElementsByAccessibilityId(string id) - поиск массива элементов по свойству content-desc.
Параметры:
string id - значение свойства content-desc.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var des = driver.FindElementsByAccessibilityId("Chrome search"); // Найти массив элементов по свойству content-desc
if (des == null)
    throw new Exception("Элементы не найдены");

var count = des.Length; // Количество найденных элементов.


IAndroidElementAPI[] FindElementsById(string id) - поиск массива элементов по свойству resource-id.
Параметры:
string id - значение свойства resource-id.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var des = driver.FindElementsById("com.android.chrome:id/title"); // Найти массив элементов по свойству resource-id
if (des == null)
    throw new Exception("Элементы не найдены");

var count = des.Length; // Количество найденных элементов.


IAndroidElementAPI[] FindElementsByClassName(string className) - поиск массива элементов по свойству class.
Параметры:
string className - значение свойства class.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var des = driver.FindElementsByClassName("android.widget.EditText"); // Найти массив элементов по имени класса
if (des == null)
    throw new Exception("Элементы не найдены");

var count = des.Length; // Количество найденных элементов.


IAndroidElementAPI[] FindElementsByXPath(string xpath) - поиск массива элементов по xPath.
Параметры:
string xpath - xPath для поиска элемента.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var des = driver.FindElementsByXPath("//*[@text=\"Display\"]");// Найти массив элементов по xPath
if (des == null)
    throw new Exception("Элементы не найдены");

var count = des.Length; // Количество найденных элементов.


IAndroidElementAPI[] FindElementsByUiAutomator(string uiSelector) - поиск массива элементов через UiSelector.
Параметры:
string uiSelector - uiSelector для поиска элемента.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var des = driver.FindElementsByUiAutomator("new UiSelector().textContains(\"screen\")"); // Найти массив элементов по UiSelector
if (des == null)
    throw new Exception("Элементы не найдены");

var count = des.Length; // Количество найденных элементов.


void ScrollToElementByAccessibilityId(string id, int maxSwipes) - скролим экран к элементу по свойству content-desc.
Параметры:
string id - значение свойства content-desc.
int maxSwipes - количество свайпов.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var countScroll = 3; // Количество скроллов
driver.ScrollToElementByAccessibilityId("Chrome search", countScroll); // Скролим до элемента по свойству content-desc


void ScrollToElementByClassName(string className, int maxSwipes) - скролим экран к элементу по свойству class.
Параметры:
string className - значение свойства class.
int maxSwipes - количество свайпов.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var countScroll = 3; // Количество скроллов
driver.ScrollToElementByClassName("android.widget.ImageView", countScroll); // Скролим до элемента по имени класса


void ScrollToElementByUiAutomator(string uiSelector, int maxSwipes) - скролим экран к элементу через UiSelector.
Параметры:
string uiSelector - uiSelector для поиска элемента.
int maxSwipes - количество свайпов.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var countScroll = 3; // Количество скроллов
driver.ScrollToElementByUiAutomator("new UiSelector().text(\"Display\")", countScroll); // Скролим до элемента по UiSelector
 
Последнее редактирование:
Интерфейс IAndroidElementAPI
IAndroidElementAPI
- предоставляет доступ к управлению элементами пользовательского интерфейса в Android приложениях. Этот интерфейс используется для выполнения различных операций с элементами, найденными с помощью методов интерфейса IAppiumDriverAPI.

Свойства:

string Id { get; }
- значение свойства id элемента.

string Text { get; } - значение свойства text элемента.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByXPath("//*[@text=\"Display\"]"); // Найти элемент по xPath
if (de == null)
    throw new Exception("Элемент не найден");

var id = de.Id; // Получить значение свойства Id
var text = de.Text; // Получить значение свойства text


Методы:

string GetAttribute(string name)
- получить значение свойства элемента.
Параметры:
string name - имя свойства, значение которого хотим получить.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByXPath("//*[@text=\"Display\"]"); // Найти элемент по xPath
if (de == null)
    throw new Exception("Элемент не найден");

var bounds = de.GetAttribute("bounds"); // Получить значение свойства bounds
var text = de.GetAttribute("text"); // Получить значение свойства text


void Click() - кликнуть на элемент.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByXPath("//*[@text=\"Display\"]"); // Найти элемент по xPath
if (de == null)
    throw new Exception("Элемент не найден");

de.Click(); // Кликнуть по элементу


void Clear() - отчистить значение элемента (если есть введённый текст, очистить текст).

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByXPath("//*[@text=\"Display\"]"); // Найти элемент по xPath
if (de == null)
    throw new Exception("Элемент не найден");

de.Clear(); // Очисть значение поля элемента


void SendText(string text) - вводим значение в поле элемента (если есть возможность ввести текст).
Параметры:
string text - значение для ввода.

Примеры:
Развернуть Свернуть Копировать
var driver = instance.DroidInstance.AppiumDriver;

var de = driver.FindElementByXPath("//*[@text=\"Display\"]"); // Найти элемент по xPath
if (de == null)
    throw new Exception("Элемент не найден");

de.SendText("Привет мир!"); // Вставить текст в поле элемента


void SendKeys(string text) - ввести спецсимволы.
Параметры:
string text - значение спецсимволов.
 
Последнее редактирование:
Интерфейс IDroidSettingsAPI Settings

IDroidSettingsAPI Settings
- представляет собой интерфейс, предназначенный для управления настройками телефона. Этот объект позволяет задавать базовые параметры устройства, такие как язык, время, геолокация и другие системные настройки. Также он предоставляет средства для работы с LSPosed в ZDE, упрощая подмену данных устройства.

Реализует кубик Настройки устройства для ZD и ZDE

Методы:

void SetLanguage(string language)
- установить язык на устройстве.
Параметры:
string language - язык. Примеры: "ru".

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

settings.SetLanguage("ru"); // Установить язык системы устройства


void SetTime(string dateTime) - установить время.
Параметры:
string dateTime - время в текстовом формате.

Перегрузка:
DateTime dateTime - время в формате DateTime.

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

settings.SetTime(DateTime.Now); // Установить текущее время


void SetTimezone(string timezone) - установить тайм зону.
Параметры:
string timezone - значение тайм зоны. Примеры: "Europe/Moscow".

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

settings.SetTimezone("Europe/Moscow");  // Установить тайм зону


void SetBaseband(string version) - смены прошивки модуля связи (GSM модуль).
Параметры:
string version - версия GSM модуля. Пример: "G9300ZCU2API3"

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

settings.SetBaseband("G9300ZCU2API3"); // Установить модуль связи


void SetGeo(double longitude, double latitude) - установка геолокации.
Параметры:
double longitude - долгота
double latitude - широта

Перегрузка:
double altitude - высота
double bearing - азимут
double speed - скорость движения объекта

Не нашёл примеров по работе с методами!


ZDE Работа с LSPosed

void OpenLSPosed()
- открыть LSPosed.

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

settings.OpenLSPosed(); // Открыть LSPosed


string GenerateRandomLSPosedSettings(string countryName) - сгенерировать Json для подмены через LSPosed случайные данные.
Параметры:
string countryName - имя страны для подмены.

Перегрузка:
IDeviceFilter filter - фильтр для генерации подмены с нужными данными.

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

var country = project.Profile.Country; // Страна для генерации
var json = settings.GenerateRandomLSPosedSettings(country); // Получить Json для подмены LSPosed


void SetLSPosedSettings(string json) - подмена данных телефона через LSPosed из Json.
Параметры:
string json - значение json для подмены LSPosed.

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

var country = project.Profile.Country; // Страна для генерации
var json = settings.GenerateRandomLSPosedSettings(country); // Получить Json для подмены LSPosed
settings.SetLSPosedSettings(json); // Сделать подмену данных устройства


void SetRandomLSPosedSettings(string countryName) - подмена данных телефона через LSPosed случайные данные.
Параметры:
string countryName - имя страны для подмены.

Перегрузка:
IDeviceFilter filter - фильтр для генерации подмены с нужными данными.

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

var country = project.Profile.Country; // Страна для генерации
settings.SetRandomLSPosedSettings(country); // Сделать случайную подмену данных устройства


void ClearLSPosedSettings() - очистить данные подмены LSPosed.

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

settings.ClearLSPosedSettings(); // Очистить данные подмены LSPosed
 
Последнее редактирование:
Интерфейс IDeviceFilter.

IDeviceFilter
- предоставляет интерфейс для работы с настройками фильтров, которые используются для генерации JSON-данных, применяемых при подмене информации о устройстве через LSPosed. Этот API позволяет настраивать параметрами фильтрации, чтобы обеспечивать нужные данные при генерации устройств.

Свойства:

string Manufacturer { get; set; }
- мануфактура телефона.
Пример: "samsung|Xiaomi|OPPO|realme|Google|OnePlus|motorola"

string Brand { get; set; } - бренд телефона.
Пример:

string Model { get; set; } - модель телефона.
Пример:

string Version { get; set; } - версия Android.
Пример: "12|13|14|15"

Примеры:
Развернуть Свернуть Копировать
var settings = instance.DroidInstance.Settings;

var filter = new DeviceFilter(); // Создаем фильтр с данными для генерации
filter.Manufacturer = "samsung|Xiaomi|OPPO|realme"; // Выбор устройств
filter.Version = "10|11|12|13"; // Выбор версии Android
var json = settings.GenerateRandomLSPosedSettings(project.Profile.Country, filter); // Генерируем случайные данные для подмены LSPosed на основание фильтра
settings.SetLSPosedSettings(json); // Делаем подмену данных
 
Последнее редактирование:
  • Спасибо
Реакции: fazan
Интерфейс IDroidProxyAPI Proxy
IDroidProxyAPI Proxy
- предоставляет интерфейс для управления настройками прокси-сервера на устройстве. Этот API позволяет как настроить базовые параметры прокси для устройства, так и выполнить дополнительные настройки, необходимые для тонкой конфигурации подключения.

Свойства:

bool BlockWebRtcLeak { get; set; }
- блокировать утечку WebRtc.

bool BlockUDPLeak { get; set; } - блокировать утечку UDP.

bool UseDnsTcp { get; set; } - использовать DNS-запросы с использованием протокола TCP.

bool UseDnsUdp { get; set; } - использовать DNS-запросы с использованием протокола UDP.


Методы:

void SetProxy(string proxy)
- установить прокси.
Параметры:
string proxy - значение прокси. Формат login:pass@IP:port

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

// Установить прокси
proxy.SetProxy("socks5://login:pass@100.20.30.40:8080");
proxy.SetProxy("https://login:pass@100.20.30.40:8080");
proxy.SetProxy("login:pass@100.20.30.40:8080");

string GetProxy() - получить прокси проекта.

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

var projectProxy = proxy.GetProxy(); // Получить прокси проекта


void ClearProxy() - очистить прокси.

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

proxy.ClearProxy(); // Очистить прокси проекта


void SetDnsServers(string dnsServers) - установить свой DNS сервер.
Параметры:
string dnsServers - DNS сервер.

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

proxy.SetDnsServers("1.1.1.1,8.8.4.4"); // Установить DNS сервер


void SetLocalAddress(string address) - установить локальный адрес.
Параметры:
string address - локальный адрес.

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

proxy.SetLocalAddress("192.168.20.0"); // Установить Локальный адрес


void EnablePrivateDns(string address) - включить частный DNS.
Параметры:
string address - частный DNS.

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

proxy.EnablePrivateDns("dns.google"); // Включить частный DNS


void DisablePrivateDns() - выключить частный DNS.

Примеры:
Развернуть Свернуть Копировать
var proxy = instance.DroidInstance.Proxy;

proxy.DisablePrivateDns(); // Отключить частный DNS


Не нашёл примеров по работе с методами:

void SetWebRtcLeakAddresses(string addresses)
- установить адреса утечки WebRtc. (уточнить)

void SetWebUdpLeakAddresses(string addresses)
- установить адреса утечки UDP. (уточнить)
 
Последнее редактирование:
Интерфейс IWebViewAPI WebView

IWebViewAPI WebView
- предоставляет доступ к управлению WebView, которое используется преимущественно в браузерах. В других приложениях WebView встречается значительно реже. Основной ценностью WebView является возможность взаимодействия с содержимым веб-страниц через JavaScript, что существенно расширяет возможности работы с сайтами.

string EvaluateScript(string script) - выполнить JavaScript.
Параметры:
string script - текст JavaScript.

Примеры:
Развернуть Свернуть Копировать
var webView = instance.DroidInstance.WebView;

var script = "return document.documentElement.innerHTML"; // JS получить html страницы
var html = webView.EvaluateScript(script); // Выполнить скрипт и получить html


string GetAttachedWebSocketUrl() - получить URL-адрес WebSocket.

Примеры:
Развернуть Свернуть Копировать
var webView = instance.DroidInstance.WebView;

var webSoket = webView.GetAttachedWebSocketUrl(); // Получить WebSoket
 
  • Спасибо
Реакции: The_vAe
Объект IDroidHierarchyAPI Hierarchy

IDroidHierarchyAPI Hierarchy
- предоставляет доступ к дереву элементов интерфейса текущего экрана устройства. Этот интерфейс используется для получения структуры UI, которая представляет собой XML-дерево всех элементов и их взаимосвязей.

string GetLayout() - получить Xml дерево текущего экрана.

Примеры:
Развернуть Свернуть Копировать
var xml = instance.DroidInstance.Hierarchy.GetLayout(); // Получить XML текущего экрана устройства
 
  • Спасибо
Реакции: molotok
Сейчас самое время опубликовать в резервах новые описания методов. :ay:
 
А официальное описание API есть? Можете дать ссылку?
Официального описания нету, поэтому сделал данную статью.

Есть примеры API от разработчиков, ищите их в Новостях об обновлениях.
Например появилось новое API для работы с LSP

131341
 
  • Спасибо
Реакции: molotok

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)