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

Dmitriy Ka

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

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

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

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

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

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

  • IDroidScreenAPI Screen
  • IFridaDeviceAPI FridaDevice
  • ISqlite3API Sqlite3

Полезные материалы:
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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 сообщения
 
Последнее редактирование:
  • Спасибо
Реакции: Hannes

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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 - значение спецсимволов.
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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); // Делаем подмену данных
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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:[email protected]:8080");
proxy.SetProxy("https://login:[email protected]:8080");
proxy.SetProxy("login:[email protected]: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. (уточнить)
 
Последнее редактирование:

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Интерфейс 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
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Объект IDroidHierarchyAPI Hierarchy

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

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

Примеры:
var xml = instance.DroidInstance.Hierarchy.GetLayout(); // Получить XML текущего экрана устройства
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Резерв
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Резерв
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
772
Благодарностей
515
Баллы
93
Резерв
 

Dobriyk0t

Client
Регистрация
28.12.2016
Сообщения
89
Благодарностей
44
Баллы
18
Сейчас самое время опубликовать в резервах новые описания методов. :ay:
 

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