2 место Автоматизация Android без посредников. Часть 1.

хоть тут и пишут по поводу "решения" вода кирилицы в теме - не нашёл его.
Nox эмулятор. Вводить русский не хочет. Через adb shell input text тоже только латиница проходит. Русские буквы никак не вводятся. даже как ???????

С этого сообщения не вводится текст.

Через cmd при команде adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'привет'
Выдаёт
Broadcasting: Intent { act=ADB_INPUT_TEXT (has extras) }
Broadcast completed: result=0

Есть решение ввода? желательно без использования буфера
 
Последнее редактирование:
хоть тут и пишут по поводу "решения" вода кирилицы в теме - не нашёл его.
Nox эмулятор. Вводить русский не хочет. Через adb shell input text тоже только латиница проходит. Русские буквы никак не вводятся. даже как ???????

С этого сообщения не вводится текст.

Через cmd при команде adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'привет'
Выдаёт


Есть решение ввода? желательно без использования буфера
 
Если остались сомнения
 
хоть тут и пишут по поводу "решения" вода кирилицы в теме - не нашёл его.
Nox эмулятор. Вводить русский не хочет. Через adb shell input text тоже только латиница проходит. Русские буквы никак не вводятся. даже как ???????

С этого сообщения не вводится текст.

Через cmd при команде adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'привет'
Выдаёт


Есть решение ввода? желательно без использования буфера
ADB не работает на прямую с кириллицей
 
Если остались сомнения
Ты по факту хоть кому то помог тут или только умничать умеешь? Своими бесполезными ответами только тему засоряешь в стиле "я тут самый умный".
 
  • Спасибо
Реакции: Ruhas
Ты по факту хоть кому то помог тут или только умничать умеешь? Своими бесполезными ответами только тему засоряешь в стиле "я тут самый умный".
все решения с чата. здесь есть все
 
Ты по факту хоть кому то помог тут или только умничать умеешь? Своими бесполезными ответами только тему засоряешь в стиле "я тут самый умный".
Просто одни находят другие ноют что здесь нет решения
 
am broadcast -a ADB_INPUT_TEXT тебе в помощь
 
93674
 
am broadcast -a ADB_INPUT_TEXT тебе в помощь
Я видел это решение. Я как раз и написал его в своём сообщении и какую ошибку выдаёт. Если есть конкретная подсказка - в чём дело - рад буду выслушать.
И на латиницу и на кириллицу ответ идентичен.
 
Я видел это решение. Я как раз и написал его в своём сообщении и какую ошибку выдаёт. Если есть конкретная подсказка - в чём дело - рад буду выслушать.
И на латиницу и на кириллицу ответ идентичен.
установи adb клавиатуру найди в этом чате код перевода кириллице в adb и проблема исчезнет сама по себе
 
  • Спасибо
Реакции: loka23
установи adb клавиатуру найди в этом чате код перевода кириллице в adb и проблема исчезнет сама по себе
Установил https://github.com/senzhk/ADBKeyBoard apk в эмулятор - результат один и тот же.

Про перевод кириллицы в нужную кодировку речь? Если да - так и пробовал. А вот с adb клавиатурой интересно...

Это всё не воспроизводится. Одинаковая ошибка, о которой писал выше.
adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'privet'
adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'привет'
adb shell am broadcast -a ADB_INPUT_TEXT --es msg 'ÐÑивеÑ'

C#:
Развернуть Свернуть Копировать
var a = project.Context["ADB"];
string text = project.Variables["Nazvanie"].Value; // в переменной Text значение - Заказ звонка технической поддержки
Encoding utf8 = Encoding.GetEncoding("ISO-8859-1");
Encoding win1251 = Encoding.GetEncoding("UTF-8");
byte[] utf8Bytes = win1251.GetBytes(text);
byte[] win1251Bytes = Encoding.Convert(utf8, win1251, utf8Bytes);
return win1251.GetString(win1251Bytes); // Результат: Ðаказ звонка ÑеÑниÑеÑкой поддеÑжки


a.Text(win1251.GetString(win1251Bytes)); //ввод текста
 
Последнее редактирование:
Установил https://github.com/senzhk/ADBKeyBoard apk в эмулятор - результат один и тот же.

Про перевод кириллицы в нужную кодировку речь? Если да - так и пробовал. А вот с adb клавиатурой интересно...

Это всё не воспроизводится. Одинаковая ошибка, о которой писал выше.


C#:
Развернуть Свернуть Копировать
var a = project.Context["ADB"];
string text = project.Variables["Nazvanie"].Value; // в переменной Text значение - Заказ звонка технической поддержки
Encoding utf8 = Encoding.GetEncoding("ISO-8859-1");
Encoding win1251 = Encoding.GetEncoding("UTF-8");
byte[] utf8Bytes = win1251.GetBytes(text);
byte[] win1251Bytes = Encoding.Convert(utf8, win1251, utf8Bytes);
return win1251.GetString(win1251Bytes); // Результат: Ðаказ звонка ÑеÑниÑеÑкой поддеÑжки


a.Text(win1251.GetString(win1251Bytes)); //ввод текста
Прочитай раздел How to use, особенно пункт 1.1 и все заработает.
 
Парни, такая проблема:

Есть несколько телефонов одной модели, с которыми шаблон отлично работает.

Но тут я достал телефон другой модели и попытался запустить шаб с ним. Все комманды, которые не требуют дампа экрана отлично отрабатывают (типа ввод текста, тап по координатам, закрыть/открыть прилу). Но когда я хочу сделать клик по элементу (a.Click), то кубик уходит в ошибку. Я так понимаю где-то дамп не подтягивается или что это может быть? При этом в логе ничего не выводится. UIAutomator дамп экрана делает, элемент присутствует.
 
Последнее редактирование:
Прочитай раздел How to use, особенно пункт 1.1 и все заработает.
Клавиатуру включил сразу, да. По умолчанию как назначить её - не пойму.
А скрипт только переводит в base64 я так понял. Я пробую на латинице вначале ввести, а потом буду с кириллицей разбираться. Всё так же выдаёт ошибку о которой писал выше.
 
Клавиатуру включил сразу, да. По умолчанию как назначить её - не пойму.
А скрипт только переводит в base64 я так понял. Я пробую на латинице вначале ввести, а потом буду с кириллицей разбираться. Всё так же выдаёт ошибку о которой писал выше.
Тебе надо текст сконвертировать в base64 и отправить командой на adbkeyboard, он введет уже кириллицей.
Комманда для ввода a.Command("am broadcast -a ADB_INPUT_B64 --es msg '"текст в base64"'", true);
 
Тебе надо текст сконвертировать в base64 и отправить командой на adbkeyboard, он введет уже кириллицей.
Комманда для ввода a.Command("am broadcast -a ADB_INPUT_B64 --es msg '"текст в base64"'", true);
текст "привет".
adb shell am broadcast -a ADB_INPUT_B64 --es msg '0L/RgNC40LLQtdGC'

ошибка прежняя
Broadcasting: Intent { act=ADB_INPUT_B64 (has extras) }
Broadcast completed: result=0
 
Чтобы не было ошибки, вводите текст через adb с помощью этого сниппета:


C#:
Развернуть Свернуть Копировать
var sv = project.Variables["sv"].Value;
//sv это серийник устройства для многопотока вида 127.0.0.1:21521

ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = "adb.exe";
startInfo1.Arguments = "-s "+sv+" shell am broadcast -a ADB_INPUT_TEXT --es msg 'ТУТ ВВОДИМЫЙ ТЕКСТ'";
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo1).WaitForExit();
Благодарю. проблема в этом была
 
.
 
Последнее редактирование:
как использую эти библиотеки кликнуть по координатам?
написал в общий код
public void ClickXY(string x, string y){
var receiver = new ConsoleOutputReceiver();
AdbClient.Instance.ExecuteRemoteCommand(String.Format(@"input tap {0} {1}", x, y), device, receiver);
}

в кубике С# написал
var a = project.Context["ADB"];
a.ClickXY("122","1048");

и не работает.
 
как использую эти библиотеки кликнуть по координатам?
написал в общий код
public void ClickXY(string x, string y){
var receiver = new ConsoleOutputReceiver();
AdbClient.Instance.ExecuteRemoteCommand(String.Format(@"input tap {0} {1}", x, y), device, receiver);
}

в кубике С# написал
var a = project.Context["ADB"];
a.ClickXY("122","1048");

и не работает.
Не проще сделать так
a.Swipe("122 ", "1048 ", "122 ", "1048 ", "100")
 
как использую эти библиотеки кликнуть по координатам?
написал в общий код
public void ClickXY(string x, string y){
var receiver = new ConsoleOutputReceiver();
AdbClient.Instance.ExecuteRemoteCommand(String.Format(@"input tap {0} {1}", x, y), device, receiver);
}

в кубике С# написал
var a = project.Context["ADB"];
a.ClickXY("122","1048");

и не работает.

Так работает
Код:
Развернуть Свернуть Копировать
var a = project.Context["ADB"];
a.Command(String.Format("input tap {0} {1}", "532", "585"), false);

Context ADB > смотри первое сообщение автора темы.
 
Как правильно сделать чтобы при ошибке когда стает поток, мог запускаться следующий поток, сейчас след поток не стартует пишет нет свободных емуляторов
 
Как правильно сделать чтобы при ошибке когда стает поток, мог запускаться следующий поток, сейчас след поток не стартует пишет нет свободных емуляторов

На красную ветку - сделай закрытие эмуля

старт нового, со списка. Запускается командой Adb по его номеру (я заранее эмули создаю)
 
  • Спасибо
Реакции: Jack_Dream
Подскажите в чем может быть проблема, есть мессенжер, во время пролистывания переписки все четко работает, только появляется картинка или ссылка активная на екране, сразу перестет работать, зенка не видит ни кнопок в емуляторе ни поле ввода текста, пролистал дальше где нет картинок и ссылок снова работает, как это побороть можно?
 
Подскажите в чем может быть проблема, есть мессенжер, во время пролистывания переписки все четко работает, только появляется картинка или ссылка активная на екране, сразу перестет работать, зенка не видит ни кнопок в емуляторе ни поле ввода текста, пролистал дальше где нет картинок и ссылок снова работает, как это побороть можно?
встречал подобное:
https://4pda.to/forum/index.php?showtopic=383300&st=12360#entry104359207 :
И если XML-файл выгрузки слишком большой (допустим больше 100 Килобайт, это больше ~100 000 символов), то в ~80% случаев его XML будет будто обрезан, то есть только первые элементы дерева попадают в него, а остальное без текста в один блок сбрасывает как картинку. Пример, где часто ловлю крупные XML: работа с выдачей Google в Chrome браузере, там часто невидимые элементы тоже попадают в XML-файл, увеличивая его размер...
Вроде в зенодроиде обходят это, но я не проверял еще https://zennolab.atlassian.net/wiki/spaces/RU/pages/2151710722/ZennoDroid :
io.appium.uiautomator2.server для корректной работы с деревом элементов
 
  • Спасибо
Реакции: Dorian_Gray и Jack_Dream

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