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

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
хоть тут и пишут по поводу "решения" вода кирилицы в теме - не нашёл его.
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
Есть решение ввода? желательно без использования буфера
 
Последнее редактирование:

Cthutq899

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

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

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


Есть решение ввода? желательно без использования буфера
 

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28

Cthutq899

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

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

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


Есть решение ввода? желательно без использования буфера
ADB не работает на прямую с кириллицей
 

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
  • Спасибо
Реакции: Ruhas

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28
Ты по факту хоть кому то помог тут или только умничать умеешь? Своими бесполезными ответами только тему засоряешь в стиле "я тут самый умный".
все решения с чата. здесь есть все
 

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28
Ты по факту хоть кому то помог тут или только умничать умеешь? Своими бесполезными ответами только тему засоряешь в стиле "я тут самый умный".
Просто одни находят другие ноют что здесь нет решения
 

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28
am broadcast -a ADB_INPUT_TEXT тебе в помощь
 

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28
93674
 

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
am broadcast -a ADB_INPUT_TEXT тебе в помощь
Я видел это решение. Я как раз и написал его в своём сообщении и какую ошибку выдаёт. Если есть конкретная подсказка - в чём дело - рад буду выслушать.
И на латиницу и на кириллицу ответ идентичен.
 

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28
Я видел это решение. Я как раз и написал его в своём сообщении и какую ошибку выдаёт. Если есть конкретная подсказка - в чём дело - рад буду выслушать.
И на латиницу и на кириллицу ответ идентичен.
установи adb клавиатуру найди в этом чате код перевода кириллице в adb и проблема исчезнет сама по себе
 
  • Спасибо
Реакции: loka23

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
установи 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)); //ввод текста
 
Последнее редактирование:

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
63
Благодарностей
36
Баллы
18
Установил 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 и все заработает.
 

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
63
Благодарностей
36
Баллы
18
Парни, такая проблема:

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

Но тут я достал телефон другой модели и попытался запустить шаб с ним. Все комманды, которые не требуют дампа экрана отлично отрабатывают (типа ввод текста, тап по координатам, закрыть/открыть прилу). Но когда я хочу сделать клик по элементу (a.Click), то кубик уходит в ошибку. Я так понимаю где-то дамп не подтягивается или что это может быть? При этом в логе ничего не выводится. UIAutomator дамп экрана делает, элемент присутствует.
 
Последнее редактирование:

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Прочитай раздел How to use, особенно пункт 1.1 и все заработает.
Клавиатуру включил сразу, да. По умолчанию как назначить её - не пойму.
А скрипт только переводит в base64 я так понял. Я пробую на латинице вначале ввести, а потом буду с кириллицей разбираться. Всё так же выдаёт ошибку о которой писал выше.
 

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
63
Благодарностей
36
Баллы
18
Клавиатуру включил сразу, да. По умолчанию как назначить её - не пойму.
А скрипт только переводит в base64 я так понял. Я пробую на латинице вначале ввести, а потом буду с кириллицей разбираться. Всё так же выдаёт ошибку о которой писал выше.
Тебе надо текст сконвертировать в base64 и отправить командой на adbkeyboard, он введет уже кириллицей.
Комманда для ввода a.Command("am broadcast -a ADB_INPUT_B64 --es msg '"текст в base64"'", true);
 

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Тебе надо текст сконвертировать в 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
 

qweqwe5435

Client
Регистрация
12.02.2017
Сообщения
63
Благодарностей
36
Баллы
18
  • Спасибо
Реакции: loka23

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Чтобы не было ошибки, вводите текст через 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();
Благодарю. проблема в этом была
 

Yurka

Client
Регистрация
27.05.2021
Сообщения
15
Благодарностей
1
Баллы
3
.
 
Последнее редактирование:

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18

Fog

Client
Регистрация
23.04.2021
Сообщения
77
Благодарностей
9
Баллы
8
как использую эти библиотеки кликнуть по координатам?
написал в общий код
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");

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

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28
как использую эти библиотеки кликнуть по координатам?
написал в общий код
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")
 
Регистрация
21.07.2021
Сообщения
77
Благодарностей
30
Баллы
18
как использую эти библиотеки кликнуть по координатам?
написал в общий код
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 > смотри первое сообщение автора темы.
 

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
330
Благодарностей
28
Баллы
28
Как правильно сделать чтобы при ошибке когда стает поток, мог запускаться следующий поток, сейчас след поток не стартует пишет нет свободных емуляторов
 
Регистрация
21.07.2021
Сообщения
77
Благодарностей
30
Баллы
18
Как правильно сделать чтобы при ошибке когда стает поток, мог запускаться следующий поток, сейчас след поток не стартует пишет нет свободных емуляторов
На красную ветку - сделай закрытие эмуля

старт нового, со списка. Запускается командой Adb по его номеру (я заранее эмули создаю)
 
  • Спасибо
Реакции: Jack_Dream

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
330
Благодарностей
28
Баллы
28
Подскажите в чем может быть проблема, есть мессенжер, во время пролистывания переписки все четко работает, только появляется картинка или ссылка активная на екране, сразу перестет работать, зенка не видит ни кнопок в емуляторе ни поле ввода текста, пролистал дальше где нет картинок и ссылок снова работает, как это побороть можно?
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 156
Благодарностей
2 157
Баллы
113
Подскажите в чем может быть проблема, есть мессенжер, во время пролистывания переписки все четко работает, только появляется картинка или ссылка активная на екране, сразу перестет работать, зенка не видит ни кнопок в емуляторе ни поле ввода текста, пролистал дальше где нет картинок и ссылок снова работает, как это побороть можно?
встречал подобное:
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

Jack_Dream

Client
Регистрация
05.12.2021
Сообщения
330
Благодарностей
28
Баллы
28

Cthutq899

Client
Регистрация
03.09.2019
Сообщения
168
Благодарностей
45
Баллы
28

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