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

На многих ресурсах просят указать возраст (как на скрине ниже).Не подскажете,как это реализовать? Пробовал скрол-не работает.Там ведь его нужно с нажатой клавишей делать по координатам.

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

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

Берешь координаты через GetCoord и свайпаешь.

Как раз решил написать,что решил я проблему). Быстро реагируете).Спасибо! Да,проблема была в координатах.Я их взял в ui automator viewer и положил в кубик swipe.
 
  • Спасибо
Реакции: WLDN
А можно ли решать рекапчу которая выскакиевает на эмуляторе?
 
@WLDN
Для подключения реального устройства по USB(если это возможно), что нужно указывать здесь:
C#:
Развернуть Свернуть Копировать
AdbClient.Instance.Connect(new DnsEndPoint(?));
у метода Connect() три перезагрузки, может есть метод подключения через USB, не могу правильно указать device.

P.S. По wifi получилось подключится без проблем, но нужен мобильный интернет :-) .
 
@WLDN
Для подключения реального устройства по USB(если это возможно), что нужно указывать здесь:
C#:
Развернуть Свернуть Копировать
AdbClient.Instance.Connect(new DnsEndPoint(?));
у метода Connect() три перезагрузки, может есть метод подключения через USB, не могу правильно указать device.

P.S. По wifi получилось подключится без проблем, но нужен мобильный интернет :-) .
К сожалению, пока не работал со смартфонами через USB, но обычно там ip:5555
 
Вопрос связанный непосредственно с работой с эмулятором.
Кто-нибудь может подсказать, как скрыть рут права от приложений на эмуляторе?
Гугл не помог)
 
Вопрос связанный непосредственно с работой с эмулятором.
Кто-нибудь может подсказать, как скрыть рут права от приложений на эмуляторе?
Гугл не помог)
Мне помогло отключение галочки рут в настройках эмулятора. Ещё есть программы типо SuperSU в которых настраиваешь рут под определенные приложения.
 
@WLDN что-то не работает на других компьютерах эмулятор с помощью adb. А в командной строке даже команду adb не разпознаёт. Но если создать папку adb в корне диска С и туда файлы adb поместить - то в cmd если перейти в эту папку и оттуда уже посылать команды adb - тогда система хотя бы знает, что это такое.
Однако на моём компьютере работает adb и сразу при запуске cmd, ни в какую папку переходить не нужно. Наверное, это потому, что определённые пути в переменных среды прописаны?
Кроме этого есть ещё проблема - у меня команда adb devices показывает устройство, если хотя бы один инстанс блюстакса запущен, а на другом компе ничего подобного нету, там список устройство пуст. Почему так может быть? И как всё таки создать это устройство, чтобы им вручную через cmd (но с помощью adb) можно было управлять?
 
@WLDN что-то не работает на других компьютерах эмулятор с помощью adb. А в командной строке даже команду adb не разпознаёт. Но если создать папку adb в корне диска С и туда файлы adb поместить - то в cmd если перейти в эту папку и оттуда уже посылать команды adb - тогда система хотя бы знает, что это такое.
Однако на моём компьютере работает adb и сразу при запуске cmd, ни в какую папку переходить не нужно. Наверное, это потому, что определённые пути в переменных среды прописаны?
Кроме этого есть ещё проблема - у меня команда adb devices показывает устройство, если хотя бы один инстанс блюстакса запущен, а на другом компе ничего подобного нету, там список устройство пуст. Почему так может быть? И как всё таки создать это устройство, чтобы им вручную через cmd (но с помощью adb) можно было управлять?
Если на другом ПК не установлен SDK с adb, то ему (adb) неоткуда взяться. Если установлен, то где-то вероятно пути не прописаны верно.
У Nox и Memu adb есть в корневой папке, можно вызывать его оттуда из cmd, но создавать проекты с помощью такого adb не получится. Нужен SDK.

C Bluestacks не работал.
 
@WLDN привет! Пробовал ли ты ставить версию SharpAdbClient 2.3.22? Я обновил, но в логе сплошные ошибки типа "Ошибка при компиляции общего кода "CS0117" ""SharpAdbClient.AdbClient" не содержит определение для "Instance"", или "SharpAdbClient.DeviceCommands.PackageManager не содержит конструктор, который принимает 1 аргументов"
Подскажи пожалуйста, в чём может быть дело? Поиск решения проблемы осложняется ещё тем, что при наведении на AdbClient.Instance.GetDevices(); (к примеру) всплывает подсказка, что это. То есть система знает эту конструкцию. А зенка всё равно на неё ругается. Проект мэйкер перезагружал после обновы - это не помогало.
 
@WLDN привет! Пробовал ли ты ставить версию SharpAdbClient 2.3.22? Я обновил, но в логе сплошные ошибки типа "Ошибка при компиляции общего кода "CS0117" ""SharpAdbClient.AdbClient" не содержит определение для "Instance"", или "SharpAdbClient.DeviceCommands.PackageManager не содержит конструктор, который принимает 1 аргументов"
Подскажи пожалуйста, в чём может быть дело? Поиск решения проблемы осложняется ещё тем, что при наведении на AdbClient.Instance.GetDevices(); (к примеру) всплывает подсказка, что это. То есть система знает эту конструкцию. А зенка всё равно на неё ругается. Проект мэйкер перезагружал после обновы - это не помогало.
Привет, нет не пробовал, поэтому не смогу подсказать.
 
кто-то сталкивался с ситуацией, когда пытаешься спарсить что-то, указываешь определенный index, но это ничего не меняет, всё время парсится информация со всех индексов, если их несколько?
как можно решить такую проблему? :)

upd вроде решил проблему)
 
Последнее редактирование:
Пытаюсь подключить всё это хозяйство через физический смартфон. ADB запустил,ui automator viewer всё прекрасно видит,а вот в каком кубике и куда прописать ip не получается. Может,кто уже подключал,поможет советом: как и куда прописать ip смартфона 192.168.0.105:5555 . По статье отсюда (https://coderoad.ru/2604727/Как-я-могу-подключиться-к-Android-с-ADB-через-TCP) пробовал и так и эдак-ни в какую.
Спасибо.
 
Пытаюсь подключить всё это хозяйство через физический смартфон. ADB запустил,ui automator viewer всё прекрасно видит,а вот в каком кубике и куда прописать ip не получается. Может,кто уже подключал,поможет советом: как и куда прописать ip смартфона 192.168.0.105:5555 . По статье отсюда (https://coderoad.ru/2604727/Как-я-могу-подключиться-к-Android-с-ADB-через-TCP) пробовал и так и эдак-ни в какую.
Спасибо.
В переменной device хранится ip:port для подключения. Если не подключается, значит проблема с доступом.
 
  • Спасибо
Реакции: Szerzs
Подскажите, а если надо тапнуть по координатам, то какой код будет?
В шаблоне автора статьи и на первой странице данной темы есть ответ на твой вопрос: пункт пройдемся по готовым кубикам - Свайпаем
 
  • Спасибо
Реакции: WLDN и dsertr21
Если текст = "Смотреть видео" то чтобы использовать только одно слово "Смотреть" в выражении xpath нужно использовать contains, так как text='Смотреть' не найдет, его там просто нет, ищется точное совпадение.
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
 
не могли бы показать, как правильно использовать 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
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
Приложи скриншот uiautomatorviewer, может @WLDN поможет разобраться как кликнуть по кнопке с нужным текстом, я тоже вчера весь вечер просидел, так и не получилось, хотя с xpath знаком не понаслышке :-)
Мой результат:
Развернуть Свернуть Копировать
Выполнение действия CSharp OwnCode. Can't find element // Элемента тю-тю
 
не могли бы показать, как правильно использовать contains на примере этого же случая?
a.Click("//node[@text='Смотреть' and @class='android.widget.Button']", 0, 10); //XPath, Index, Секунды
Эта библиотека не работает с Кириллицой, нужно править и пересобирать её, поэтому лучше зацепляться за имена на Английском. Если их нет, то составлять длинные XPath: //node/node/node[@class='android.widget.Button']
 
Приложи скриншот uiautomatorviewer, может @WLDN поможет разобраться как кликнуть по кнопке с нужным текстом, я тоже вчера весь вечер просидел, так и не получилось, хотя с xpath знаком не понаслышке :-)
Мой результат:
Развернуть Свернуть Копировать
Выполнение действия CSharp OwnCode. Can't find element // Элемента тю-тю
Можешь присылать сразу сюда проблему, может быть здесь решится быстрее и сэкономишь время. Я отвечу или кто-то другой.
 
Эта библиотека не работает с Кириллицой, нужно править и пересобирать её, поэтому лучше зацепляться за имена на Английском.
Перевел интерфейс приложения на английский язык все пути Xpath с текстом заработали :bt:.
 
  • Спасибо
Реакции: WLDN
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
Не скачиваются файлы прикрепленные к статье.
 
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
 
  • Спасибо
Реакции: Szerzs

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