Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Внимание! Нашел ошибку или неточность? Напиши в ЛС - исправлю!
Всем привет!
Добро пожаловать в первую часть документации по работе с C# ZennoDroid. В этом материале я постарался собрать основную информацию и подробно описать ключевые методы работы с объектами ZennoDroid, а так же написал C# примеры. Цель этой документации — помочь разработчикам эффективно использовать возможности C# API ZennoDroid для своих шаблонов.
Основной объект для работы с С# ZennoDroid:
IDroidInstanceAPI DroidInstance- данный объект является основным интерфейсом для работы с ZennoDroid API. Он представляет собой контейнер для объектов интерфейсов, обеспечивающих взаимодействие с различными аспектами Android, такими как управление приложениями, ввод данных, настройки и т.д.
С его помощью мы получаем доступ к необходимому объекту взаимодействия и использовать его методы и свойства для работы с API.
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;
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");
var action = instance.DroidInstance.Action;
action.SelectRandom();
void SelectRandom(string mask) - выбираем случайное устройство по маске. Название содержит маску. (уточнить) как работает маска! Параметры: string mask - передаем значение нашей маски.
C#:
var action = instance.DroidInstance.Action;
action.SelectRandom("memu");
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();
IDroidAppAPI App - предоставляет доступ к управлению приложениями на устройстве. С помощью этого интерфейса можно устанавливать, удалять, открывать и закрывать приложения, а также выполнять другие действия, связанные с управлением установленными приложениями. Методам часто требуется передача параметра packageName — имени приложения, что помогает идентифицировать и управлять нужным приложением. Для поиска нужного имени приложения можно использовать инструмент ZD "Установленные приложения".
Реализует кубик Действия с приложениями для ZD и ZDE
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); // Удалить аккаунт
string GetAccounts(string packageName) - получить аккаунты. Получаем в формате Json. Параметры: string packageName- имя приложения, для работы метода.
Перегрузка: string type- тип аккаунта
Примеры:
var app = instance.DroidInstance.App;
var packageName = "com.google.chrome"; // Имя приложения
var json = app.GetAccounts(packageName); // Получить аккаунты приложения
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); // Вводим текст с настройкой скорости ввода
Перегрузка: 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 сообщения
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("Привет мир!"); // Написать текс в поле элемента
IAndroidElementAPIFindElementById(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; // Количество найденных элементов.
voidScrollToElementByAccessibilityId(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("Привет мир!"); // Вставить текст в поле элемента
IDroidSettingsAPI Settings - представляет собой интерфейс, предназначенный для управления настройками телефона. Этот объект позволяет задавать базовые параметры устройства, такие как язык, время, геолокация и другие системные настройки. Также он предоставляет средства для работы с LSPosed в 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 - предоставляет интерфейс для работы с настройками фильтров, которые используются для генерации JSON-данных, применяемых при подмене информации о устройстве через LSPosed. Этот API позволяет настраивать параметрами фильтрации, чтобы обеспечивать нужные данные при генерации устройств.
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); // Делаем подмену данных
Интерфейс IDroidProxyAPI Proxy IDroidProxyAPI Proxy - предоставляет интерфейс для управления настройками прокси-сервера на устройстве. Этот API позволяет как настроить базовые параметры прокси для устройства, так и выполнить дополнительные настройки, необходимые для тонкой конфигурации подключения.
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(); // Получить прокси проекта
voidClearProxy() - очистить прокси.
Примеры:
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 сервер
IWebViewAPI WebView - предоставляет доступ к управлению WebView, которое используется преимущественно в браузерах. В других приложениях WebView встречается значительно реже. Основной ценностью WebView является возможность взаимодействия с содержимым веб-страниц через 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
IDroidHierarchyAPI Hierarchy - предоставляет доступ к дереву элементов интерфейса текущего экрана устройства. Этот интерфейс используется для получения структуры UI, которая представляет собой XML-дерево всех элементов и их взаимосвязей.
string GetLayout() - получить Xml дерево текущего экрана.
Примеры:
var xml = instance.DroidInstance.Hierarchy.GetLayout(); // Получить XML текущего экрана устройства