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

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
На многих ресурсах просят указать возраст (как на скрине ниже).Не подскажете,как это реализовать? Пробовал скрол-не работает.Там ведь его нужно с нажатой клавишей делать по координатам.

Посмотреть вложение 60616
Это называется Swipe.

Берешь координаты через GetCoord и свайпаешь.
 
Последнее редактирование:
  • Спасибо
Реакции: Szerzs

Szerzs

Client
Регистрация
15.06.2019
Сообщения
259
Благодарностей
68
Баллы
28
Это называется Swipe.

Берешь координаты через GetCoord и свайпаешь.
Как раз решил написать,что решил я проблему). Быстро реагируете).Спасибо! Да,проблема была в координатах.Я их взял в ui automator viewer и положил в кубик swipe.
 
  • Спасибо
Реакции: WLDN

MAKCUW

Новичок
Регистрация
08.07.2020
Сообщения
4
Благодарностей
0
Баллы
1
А можно ли решать рекапчу которая выскакиевает на эмуляторе?
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
@WLDN
Для подключения реального устройства по USB(если это возможно), что нужно указывать здесь:
C#:
AdbClient.Instance.Connect(new DnsEndPoint(?));
у метода Connect() три перезагрузки, может есть метод подключения через USB, не могу правильно указать device.

P.S. По wifi получилось подключится без проблем, но нужен мобильный интернет :-) .
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
@WLDN
Для подключения реального устройства по USB(если это возможно), что нужно указывать здесь:
C#:
AdbClient.Instance.Connect(new DnsEndPoint(?));
у метода Connect() три перезагрузки, может есть метод подключения через USB, не могу правильно указать device.

P.S. По wifi получилось подключится без проблем, но нужен мобильный интернет :-) .
К сожалению, пока не работал со смартфонами через USB, но обычно там ip:5555
 

pazuofo

Client
Регистрация
20.04.2019
Сообщения
45
Благодарностей
17
Баллы
8
Вопрос связанный непосредственно с работой с эмулятором.
Кто-нибудь может подсказать, как скрыть рут права от приложений на эмуляторе?
Гугл не помог)
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Вопрос связанный непосредственно с работой с эмулятором.
Кто-нибудь может подсказать, как скрыть рут права от приложений на эмуляторе?
Гугл не помог)
Мне помогло отключение галочки рут в настройках эмулятора. Ещё есть программы типо SuperSU в которых настраиваешь рут под определенные приложения.
 

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
794
Благодарностей
136
Баллы
43
@WLDN что-то не работает на других компьютерах эмулятор с помощью adb. А в командной строке даже команду adb не разпознаёт. Но если создать папку adb в корне диска С и туда файлы adb поместить - то в cmd если перейти в эту папку и оттуда уже посылать команды adb - тогда система хотя бы знает, что это такое.
Однако на моём компьютере работает adb и сразу при запуске cmd, ни в какую папку переходить не нужно. Наверное, это потому, что определённые пути в переменных среды прописаны?
Кроме этого есть ещё проблема - у меня команда adb devices показывает устройство, если хотя бы один инстанс блюстакса запущен, а на другом компе ничего подобного нету, там список устройство пуст. Почему так может быть? И как всё таки создать это устройство, чтобы им вручную через cmd (но с помощью adb) можно было управлять?
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
@WLDN что-то не работает на других компьютерах эмулятор с помощью adb. А в командной строке даже команду adb не разпознаёт. Но если создать папку adb в корне диска С и туда файлы adb поместить - то в cmd если перейти в эту папку и оттуда уже посылать команды adb - тогда система хотя бы знает, что это такое.
Однако на моём компьютере работает adb и сразу при запуске cmd, ни в какую папку переходить не нужно. Наверное, это потому, что определённые пути в переменных среды прописаны?
Кроме этого есть ещё проблема - у меня команда adb devices показывает устройство, если хотя бы один инстанс блюстакса запущен, а на другом компе ничего подобного нету, там список устройство пуст. Почему так может быть? И как всё таки создать это устройство, чтобы им вручную через cmd (но с помощью adb) можно было управлять?
Если на другом ПК не установлен SDK с adb, то ему (adb) неоткуда взяться. Если установлен, то где-то вероятно пути не прописаны верно.
У Nox и Memu adb есть в корневой папке, можно вызывать его оттуда из cmd, но создавать проекты с помощью такого adb не получится. Нужен SDK.

C Bluestacks не работал.
 

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
794
Благодарностей
136
Баллы
43
@WLDN привет! Пробовал ли ты ставить версию SharpAdbClient 2.3.22? Я обновил, но в логе сплошные ошибки типа "Ошибка при компиляции общего кода "CS0117" ""SharpAdbClient.AdbClient" не содержит определение для "Instance"", или "SharpAdbClient.DeviceCommands.PackageManager не содержит конструктор, который принимает 1 аргументов"
Подскажи пожалуйста, в чём может быть дело? Поиск решения проблемы осложняется ещё тем, что при наведении на AdbClient.Instance.GetDevices(); (к примеру) всплывает подсказка, что это. То есть система знает эту конструкцию. А зенка всё равно на неё ругается. Проект мэйкер перезагружал после обновы - это не помогало.
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
@WLDN привет! Пробовал ли ты ставить версию SharpAdbClient 2.3.22? Я обновил, но в логе сплошные ошибки типа "Ошибка при компиляции общего кода "CS0117" ""SharpAdbClient.AdbClient" не содержит определение для "Instance"", или "SharpAdbClient.DeviceCommands.PackageManager не содержит конструктор, который принимает 1 аргументов"
Подскажи пожалуйста, в чём может быть дело? Поиск решения проблемы осложняется ещё тем, что при наведении на AdbClient.Instance.GetDevices(); (к примеру) всплывает подсказка, что это. То есть система знает эту конструкцию. А зенка всё равно на неё ругается. Проект мэйкер перезагружал после обновы - это не помогало.
Привет, нет не пробовал, поэтому не смогу подсказать.
 

morgansho

Client
Регистрация
18.11.2018
Сообщения
16
Благодарностей
4
Баллы
3
кто-то сталкивался с ситуацией, когда пытаешься спарсить что-то, указываешь определенный index, но это ничего не меняет, всё время парсится информация со всех индексов, если их несколько?
как можно решить такую проблему? :-)

upd вроде решил проблему)
 
Последнее редактирование:

ex3maL

Client
Регистрация
22.05.2020
Сообщения
359
Благодарностей
267
Баллы
63

Szerzs

Client
Регистрация
15.06.2019
Сообщения
259
Благодарностей
68
Баллы
28
Пытаюсь подключить всё это хозяйство через физический смартфон. ADB запустил,ui automator viewer всё прекрасно видит,а вот в каком кубике и куда прописать ip не получается. Может,кто уже подключал,поможет советом: как и куда прописать ip смартфона 192.168.0.105:5555 . По статье отсюда (https://coderoad.ru/2604727/Как-я-могу-подключиться-к-Android-с-ADB-через-TCP) пробовал и так и эдак-ни в какую.
Спасибо.
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Пытаюсь подключить всё это хозяйство через физический смартфон. ADB запустил,ui automator viewer всё прекрасно видит,а вот в каком кубике и куда прописать ip не получается. Может,кто уже подключал,поможет советом: как и куда прописать ip смартфона 192.168.0.105:5555 . По статье отсюда (https://coderoad.ru/2604727/Как-я-могу-подключиться-к-Android-с-ADB-через-TCP) пробовал и так и эдак-ни в какую.
Спасибо.
В переменной device хранится ip:port для подключения. Если не подключается, значит проблема с доступом.
 
  • Спасибо
Реакции: Szerzs

dsertr21

Client
Регистрация
20.06.2016
Сообщения
17
Благодарностей
7
Баллы
3

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Подскажите, а если надо тапнуть по координатам, то какой код будет?
В шаблоне автора статьи и на первой странице данной темы есть ответ на твой вопрос: пункт пройдемся по готовым кубикам - Свайпаем
 
  • Спасибо
Реакции: WLDN и dsertr21

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93

morgansho

Client
Регистрация
18.11.2018
Сообщения
16
Благодарностей
4
Баллы
3
Если текст = "Смотреть видео" то чтобы использовать только одно слово "Смотреть" в выражении xpath нужно использовать contains, так как text='Смотреть' не найдет, его там просто нет, ищется точное совпадение.
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 789
Благодарностей
1 954
Баллы
113
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
a.Click("//node[contains(@text, 'Смотреть') and @class='android.widget.Button']", 0, 10);
Только учитывайте, что регистр текста тоже важен и по созданному xpath должен находиться всего 1 элемент. Рекомендую почитать статьи по работе с xpath, они есть и на форуме и на других сайтах. Можете поискать видео на ютуб, так же обучение по xpath есть в различных видеокурсах (например в ZennoAcademy от sibbora, возможно есть в курсах других авторов)
 
  • Спасибо
Реакции: trecho и morgansho

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
Приложи скриншот uiautomatorviewer, может @WLDN поможет разобраться как кликнуть по кнопке с нужным текстом, я тоже вчера весь вечер просидел, так и не получилось, хотя с xpath знаком не понаслышке :-)
Мой результат:
Выполнение действия CSharp OwnCode. Can't find element // Элемента тю-тю
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
Эта библиотека не работает с Кириллицой, нужно править и пересобирать её, поэтому лучше зацепляться за имена на Английском. Если их нет, то составлять длинные XPath: //node/node/node[@class='android.widget.Button']
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Приложи скриншот uiautomatorviewer, может @WLDN поможет разобраться как кликнуть по кнопке с нужным текстом, я тоже вчера весь вечер просидел, так и не получилось, хотя с xpath знаком не понаслышке :-)
Мой результат:
Выполнение действия CSharp OwnCode. Can't find element // Элемента тю-тю
Можешь присылать сразу сюда проблему, может быть здесь решится быстрее и сэкономишь время. Я отвечу или кто-то другой.
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Эта библиотека не работает с Кириллицой, нужно править и пересобирать её, поэтому лучше зацепляться за имена на Английском.
Перевел интерфейс приложения на английский язык все пути Xpath с текстом заработали :bt:.
 
  • Спасибо
Реакции: WLDN

morgansho

Client
Регистрация
18.11.2018
Сообщения
16
Благодарностей
4
Баллы
3
a.Click("//node[contains(@text, 'Смотреть') and @class='android.widget.Button']", 0, 10);
Только учитывайте, что регистр текста тоже важен и по созданному xpath должен находиться всего 1 элемент. Рекомендую почитать статьи по работе с xpath, они есть и на форуме и на других сайтах. Можете поискать видео на ютуб, так же обучение по xpath есть в различных видеокурсах (например в ZennoAcademy от sibbora, возможно есть в курсах других авторов)
спасибо, всё получилось. Сколько не гуглил, все варианты перепробовал, но всё не так было)

Эта библиотека не работает с Кириллицой, нужно править и пересобирать её, поэтому лучше зацепляться за имена на Английском. Если их нет, то составлять длинные XPath: //node/node/node[@class='android.widget.Button']
да да, я заметил, благо есть возможность выбрать английский интерфейс и всё без проблем работает) спасибо

Приложи скриншот uiautomatorviewer, может @WLDN поможет разобраться как кликнуть по кнопке с нужным текстом, я тоже вчера весь вечер просидел, так и не получилось, хотя с xpath знаком не понаслышке :-)
уже разобрался) мне не как кликнуть надо было, а выпарсить весь текст, зная только слово или фразу, всё получилось. Но всё равно нужно почитать и посмотреть видео про xpath)
 
  • Спасибо
Реакции: WLDN

paradiz

Новичок
Регистрация
09.08.2020
Сообщения
4
Благодарностей
0
Баллы
1
Не скачиваются файлы прикрепленные к статье.
 

morgansho

Client
Регистрация
18.11.2018
Сообщения
16
Благодарностей
4
Баллы
3
  • Спасибо
Реакции: WLDN

Szerzs

Client
Регистрация
15.06.2019
Сообщения
259
Благодарностей
68
Баллы
28
C#:
string text = project.Variables["test"].Value; // в переменной Text
Encoding utf8 = Encoding.GetEncoding("ISO-8859-1");
Encoding win1251 = Encoding.GetEncoding("UTF-8");
byte[] utf8Bytes = win1251.GetBytes(text);
byte[] win1251Bytes = Encoding.Convert(win1251, utf8, utf8Bytes);
return win1251.GetString(win1251Bytes); //

Решил вопрос только последующей конвертацией
Подскажите пожалуйста,в чём может быть проблема:
кодировка.jpg
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
  • Спасибо
Реакции: Szerzs

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