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

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
569
Points
93
Давай тогда вернемся к С
Если в фразе присутствует пробел, тогда не работает
А если пробела нет - все работает

Не работает
C#:
var a = project.Context["ADB"];
a.Text("Helo Friend"); //ввод текста
Работает
C#:
var a = project.Context["ADB"];
a.Text("Helo_Friend"); //ввод текста
В комментариях уже есть ответ на этот вопрос. Замена пробела на %s
 

ErikMoor

Client
Joined
Mar 24, 2016
Messages
123
Reaction score
22
Points
18
В комментариях уже есть ответ на этот вопрос. Замена пробела на %s
21.png


Почему то записывает без пробела хотя указано с пробелом Hello%sWord


C#:
var a = project.Context["ADB"];
a.Text(project.Variables["Client"].Value); //ввод текста
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
569
Points
93
View attachment 62077

Почему то записывает без пробела хотя указано с пробелом Hello%sWord


C#:
var a = project.Context["ADB"];
a.Text(project.Variables["Client"].Value); //ввод текста
По всей видимости, потому что у Memu в приложениях багнутый ввод с помощью adb input
 
  • Thank you
Reactions: udder

morgansho

Client
Joined
Nov 18, 2018
Messages
17
Reaction score
4
Points
3
А список event'ов ограничен 85, как написано в статье?
наткнулся на полный список event'ов https://gist.github.com/arjunv/2bbcca9a1a1c127749f8dcb6d36fb0bc
конкретно мне интересен "key_paste": "adb shell input keyevent 279" , потому что при вводе текста ещё пробел можно заменить на %s , но буквы или знаки типа "β à ñ" и тд не могу ввести. Это возможно у меня только с помощью копировать/вставить)
может будут какие-то идеи как можно сделать ввод таких знаков или как вставить текст такой?)
 
  • Thank you
Reactions: sergio197675

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
Чем мне нравится этот метод автоматизации,это тем,что он работает и в nox и в memu.Я хотел попробовать его ещё в Genymotion-но не получилось настроить стартовые кубики (во первых-ip устройства не нашёл,во вторых-Get Pid,Get Device.
Чем хорош Genymotion: если на моём рабочем ноуте могу запустить постер+1 nox,то с постером в Genymotion могу запустить 3 эмулятора! Производительность-бешеная! Я думаю,это многие бы оценили.
 
  • Thank you
Reactions: Yuriy Zymlex
H

Hamna

Guest
Всем привет, подключал кто-нибудь физические устройства таким методом? Подскажите правильно я понимаю: по идее телефон сразу подключается и не надо его через дополнительные команды подключать или надо устанавливать соединение через ip и порт? Я совсем запутался
 
  • Thank you
Reactions: orka13 and Eldario

ErikMoor

Client
Joined
Mar 24, 2016
Messages
123
Reaction score
22
Points
18
23.png


Приветствую, подскажите пжл
Как можно бороться с этой нодой?
 

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
Всем привет, подключал кто-нибудь физические устройства таким методом? Подскажите правильно я понимаю: по идее телефон сразу подключается и не надо его через дополнительные команды подключать или надо устанавливать соединение через ip и порт? Я совсем запутался
Я подключал.Нужны доп. команды.
Я делал так:
ПЕРЕД НАЧАЛОМ УСТАНОВИТЬ USB ДРАЙВЕР СМАРТФОНА!
1.Включил режим разработчика.Отладка по usb.Узнал ip на смарте (скажем он у нас 192.168.0.102).
2.Вписал их в проекте,где нужно.
3. Поочерёдно в командной строке вводил эти команды (думал автоматизировать через кубики-но не получилось.Может кто подскажет?):
1- adb kill-server

2- adb usb

3- adb tcpip 5555

4- adb connect 192.168.0.102:5555
Как получили в 4м пункте ответ connected to 192.168.0.105:5555-можно запускать проект
 

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
У меня такой вопрос по запуску memu в командной строке : вот в nox скажем запустить по номеру эмулятор команда такая (запускаю через батник):
"D:\Program Files\Nox\bin\Nox.exe" -clone:Nox_10".
Вроде те же пути и названия в memu ("D:\Program Files\Microvirt\MEmu\MEmu.exe" -clone:MEmu_10)" - а не работает).
Может кно-нибудь подсказать: как memu по номерам запускать?
 

radv

Client
Joined
May 11, 2015
Messages
3,854
Reaction score
2,084
Points
113
Может кно-нибудь подсказать: как memu по номерам запускать?
Тебе как раз надо смотреть управление мему из командной строки, оно отличается от нокса.
 

dr.reklam

Client
Joined
Jun 2, 2020
Messages
68
Reaction score
29
Points
18
Подскажите как правильно вставить переменную в путь xpath

C#:
var a = project.Context["ADB"];

a.Wait("//node[@text=(project.Variables["random"].Value)]", 0, 10); //XPath, Index, Секунды
Так не получается, пишет
"Компиляция кода Ошибка в действии "CS1525" "Недопустимый терм ")" в выражении". [Строка: 2; Cтолбец: 66]"
 

morgansho

Client
Joined
Nov 18, 2018
Messages
17
Reaction score
4
Points
3
Подскажите как правильно вставить переменную в путь xpath

C#:
var a = project.Context["ADB"];

a.Wait("//node[@text=(project.Variables["random"].Value)]", 0, 10); //XPath, Index, Секунды
Так не получается, пишет
"Компиляция кода Ошибка в действии "CS1525" "Недопустимый терм ")" в выражении". [Строка: 2; Cтолбец: 66]"
попробуй так
C#:
var a = project.Context["ADB"];

a.Wait("//node[@text='"+project.Variables["random"].Value+"']", 0, 10); //XPath, Index, Секунды
 

ErikMoor

Client
Joined
Mar 24, 2016
Messages
123
Reaction score
22
Points
18
Заметил вот такую особенность, когда запущено приложение psiphon
Открыто именно как на картинке ниже, не запускается UI Automator
Возможно кто то сталкивался с данной проблемой и знает как решить?

25.png
 

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
Может быть, что нужно экранировать вводимые символы с помощью \ перед вводимым символом. Или заменить пробелы на %s (например, если проблема связана с ними)
При вводе предложения вместо пробелов вставляю %s (иначе вообще ничего не пишется), но слова склеиваются в одно длинное предложение.Не подскажете,в чём проблема? может есть другие способы отправлять нормальные предложения? Символ \ не помогает.
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
569
Points
93
При вводе предложения вместо пробелов вставляю %s (иначе вообще ничего не пишется), но слова склеиваются в одно длинное предложение.Не подскажете,в чём проблема? может есть другие способы отправлять нормальные предложения? Символ \ не помогает.
Не могу подсказать, не знаю. Есть другой универсальный способ, готов продать его.
 

ErikMoor

Client
Joined
Mar 24, 2016
Messages
123
Reaction score
22
Points
18
Подскажите пжл, как запустить нужную копию nox


C#:
var proc = System.Diagnostics.Process.Start(project.Variables["settings_nox"].Value, Regex.Match(project.Variables["start_cmd"].Value, "-clone:.*").ToString());

Этим кодом запускается первый эмуль
К примеру список эмулей:
1
2
3
4
Кодом что выше все время запускается первый эмуль, но если первый уже запущен, то следующий по списку не запускается
Но мне надо что бы запускал именно тот что мне надо к примеру под номером 3
 

dizney

Client
Joined
Jan 25, 2014
Messages
51
Reaction score
53
Points
18
Подскажите пжл, как запустить нужную копию nox


C#:
var proc = System.Diagnostics.Process.Start(project.Variables["settings_nox"].Value, Regex.Match(project.Variables["start_cmd"].Value, "-clone:.*").ToString());

Этим кодом запускается первый эмуль
К примеру список эмулей:
1
2
3
4
Кодом что выше все время запускается первый эмуль, но если первый уже запущен, то следующий по списку не запускается
Но мне надо что бы запускал именно тот что мне надо к примеру под номером 3
C#:
var param = project.Variables["param"].Value;
var proc = System.Diagnostics.Process.Start(project.Variables["settings_nox"].Value, Regex.Match(project.Variables["start_cmd"].Value, "-clone:Nox_"+param).ToString());
Переменная param, там добавляете копию эмулятора, начиная с 0.
 

ErikMoor

Client
Joined
Mar 24, 2016
Messages
123
Reaction score
22
Points
18
Спасибо за ответ, но запускается все время первый эмулятор
Вот еще вопрос, а как тогда закрыть конкретный эмулятор ?
Этим кодом, он его выключает power , но окно открыто как на фото

C#:
var a = project.Context["ADB"];

a.KeyEvent("26"); //26 -->  "KEYCODE_POWER"
 

Attachments

dizney

Client
Joined
Jan 25, 2014
Messages
51
Reaction score
53
Points
18
Спасибо за ответ, но запускается все время первый эмулятор
Вы пробовали подставить число отличное от 0? Если да, тогда вот рабочий код:

C#:
var param = project.Variables["param"].Value;

ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = @"C:\Program Files\Nox\bin\nox.exe";//указываете свой путь
startInfo1.Arguments = @"start -clone:Nox_"+param;//параметры выполнения adb команды
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
var process = System.Diagnostics.Process.Start(startInfo1);
Код для закрытия конкретного эмулятора:

C#:
var param = project.Variables["param"].Value;

ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = @"C:\Program Files\Nox\bin\nox.exe";//указываете свой путь
startInfo1.Arguments = @"-clone:Nox_"+param+" -quit";//параметры выполнения adb команды
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
Process.Start(startInfo1).WaitForExit();
 

Yuriy Zymlex

Moderator
Staff member
Joined
Oct 24, 2016
Messages
6,571
Reaction score
3,395
Points
113
Если запускать с открытого окна cmd, все вводится верно
Но если запускать батник который лежит по этому же пути c:\Program Files (x86)\Microvirt\MEmu\1.bat
Учитывайте так же, что кодировка консоли и файла имеете значение всегда.
62894

В C# строка UTF-8.
 

Yuriy Zymlex

Moderator
Staff member
Joined
Oct 24, 2016
Messages
6,571
Reaction score
3,395
Points
113
Чем хорош Genymotion: если на моём рабочем ноуте могу запустить постер+1 nox,то с постером в Genymotion могу запустить 3 эмулятора! Производительность-бешеная! Я думаю,это многие бы оценили.
К сожалению, Genymotion продукт не бесплатный и со своими условиями, и наврядли бы многих устроила + его стоимость к цене дроида.
 

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
Вот есть 2 кода: тап по координатам и свайп.
Свайп:

var a = project.Context["ADB"];
a.Swipe("200", "600", "200", "200", "900"); //координаты x1, y1, x2, y2, sss - скорость в милисекундах

Как вставить из переменной рандомное число в координату y1 (вместо значения "600")-чтоб можно было рандомно менять длину свайпа.

И тап по координатам:

var a = project.Context["ADB"];
a.Command("input tap 294 36", false); //где x и y твои координаты

Так же: из переменной брать значения x и y
 
  • Thank you
Reactions: GrandArab

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
569
Points
93
Вот есть 2 кода: тап по координатам и свайп.
Свайп:

var a = project.Context["ADB"];
a.Swipe("200", "600", "200", "200", "900"); //координаты x1, y1, x2, y2, sss - скорость в милисекундах

Как вставить из переменной рандомное число в координату y1 (вместо значения "600")-чтоб можно было рандомно менять длину свайпа.

И тап по координатам:

var a = project.Context["ADB"];
a.Command("input tap 294 36", false); //где x и y твои координаты

Так же: из переменной брать значения x и y
Свайп:
var a = project.Context["ADB"];
string y1 = Global.Classes.rnd.Next(400,800).ToString();
    a.Swipe("200", y1, "200", "200", "900"); //координаты x1, y1, x2, y2, sss - скорость в милисекундах
Тап по координатам:
var a = project.Context["ADB"];
string x = Global.Classes.rnd.Next(200,400).ToString();
string y = Global.Classes.rnd.Next(20,40).ToString();
a.Command(String.Format("input tap {0} {1}",x, y), false); //где x и y твои координаты
 
  • Thank you
Reactions: GrandArab

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
Свайп:
var a = project.Context["ADB"];
string y1 = Global.Classes.rnd.Next(400,800).ToString();
    a.Swipe("200", y1, "200", "200", "900"); //координаты x1, y1, x2, y2, sss - скорость в милисекундах
Тап по координатам:
var a = project.Context["ADB"];
string x = Global.Classes.rnd.Next(200,400).ToString();
string y = Global.Classes.rnd.Next(20,40).ToString();
a.Command(String.Format("input tap {0} {1}",x, y), false); //где x и y твои координаты

Спасибо-попробую.А существует ли вариант не парсинга а копирования? Обычно на сайтах ссылки завёрнуты просто в слова под нод content-desc:

Screenshot_1.png


Слово оплата-это ссылка.Вот есть вариант парсить или копировать именно ссылку?
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
569
Points
93
Спасибо-попробую.А существует ли вариант не парсинга а копирования? Обычно на сайтах ссылки завёрнуты просто в слова под нод content-desc:

View attachment 62987

Слово оплата-это ссылка.Вот есть вариант парсить или копировать именно ссылку?
Попробуй сделать dump xml и поискать ссылку там, если в UIAutomator или в xml не выведет, то этим способом нельзя.
 
  • Thank you
Reactions: Szerzs

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28
var a = project.Context["ADB"];
string x = Global.Classes.rnd.Next(200,400).ToString();
string y = Global.Classes.rnd.Next(20,40).ToString();
a.Command(String.Format("input tap {0} {1}",x, y), false); //где x и y твои координаты


Тапает в одном месте.
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
569
Points
93
var a = project.Context["ADB"];
string x = Global.Classes.rnd.Next(200,400).ToString();
string y = Global.Classes.rnd.Next(20,40).ToString();
a.Command(String.Format("input tap {0} {1}",x, y), false); //где x и y твои координаты


Тапает в одном месте.
Ну я же не знаю какие тебе координаты нужны, подставь свои. Я сбрасываю пример всегда, а не код, который нужно использовать в работе.
 

Szerzs

Client
Joined
Jun 15, 2019
Messages
260
Reaction score
68
Points
28

loka23

Client
Joined
Aug 2, 2019
Messages
134
Reaction score
10
Points
18
Помогите :-) Застрял почти в самом начале. Что значит -
"Команды adb теперь можно пропустить через подключенную библиотеку SharpAdbClient."? Где эти команды выполнять? В cmd не получается, т.к. он не находит команды adb. Хоть в ноксе режим отладчика по USB включен.
Пробовал через телефон просто путём вывода нужного приложения, но оно с данным именем не запускается.
 

radv

Client
Joined
May 11, 2015
Messages
3,854
Reaction score
2,084
Points
113
Помогите :-) Застрял почти в самом начале. Что значит -
"Команды adb теперь можно пропустить через подключенную библиотеку SharpAdbClient."? Где эти команды выполнять? В cmd не получается, т.к. он не находит команды adb. Хоть в ноксе режим отладчика по USB включен.
Пробовал через телефон просто путём вывода нужного приложения, но оно с данным именем не запускается.
а сам adb установлен? Прочитайте еще раз не торопясь (в том числе под спойлерами). Проверьте, все ли нужное для работы установили.
 
  • Thank you
Reactions: WLDN

Users Who Are Viewing This Thread (Total: 3, Members: 0, Guests: 3)