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

Помогите :-) Застрял почти в самом начале. Что значит -
"Команды adb теперь можно пропустить через подключенную библиотеку SharpAdbClient."? Где эти команды выполнять? В cmd не получается, т.к. он не находит команды adb. Хоть в ноксе режим отладчика по USB включен.
Пробовал через телефон просто путём вывода нужного приложения, но оно с данным именем не запускается.
С помощью C# сниппетов в ProjectMaker.
 
С помощью C# сниппетов в ProjectMaker.
Всё равно не понял:au: В статье написано про выполнение команд adb через cmd. А как их выполнять через C# кубики?

// в CMD получить наименование текущего окна, которое нужно вставить в этот запрос
// adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
 
Всё равно не понял:au: В статье написано про выполнение команд adb через cmd. А как их выполнять через C# кубики?

// в CMD получить наименование текущего окна, которое нужно вставить в этот запрос
// adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'
С помощью библиотеки SharpAdb. Можно проверить на тестовом шаблоне как это работает.
Если непонятно, то попробовать перечитать статью и вникнуть. Большинству понятна информация из статьи, значит её должно быть достаточно для понимания.

// в CMD получить наименование текущего окна, которое нужно вставить в этот запрос
// adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

Это для cmd. Если SDK не установлен, то можно воспользоваться adb из папки с эмулятором.
 
С помощью библиотеки SharpAdb. Можно проверить на тестовом шаблоне как это работает.
Если непонятно, то попробовать перечитать статью и вникнуть. Большинству понятна информация из статьи, значит её должно быть достаточно для понимания.

// в CMD получить наименование текущего окна, которое нужно вставить в этот запрос
// adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

Это для cmd. Если SDK не установлен, то можно воспользоваться adb из папки с эмулятором.
Так в том и дело, что сюда лезут те, у кого есть какие-то навыки :-) А я их не имею, но желаю разобраться.
Дошёл до пункта кликов, не могу никак сообразить как правильно Xpath нужного элемента прописывать. В первом сообщении есть туториал xpath, но с ним проблема..
Команды пишу через cmd(из папки с ноксом). Подключённое устройство видит.

Понимаю что пишет о несовместимости, но что удалить\переустановить? всё заново уже скачивал - тоже самое.





UP: убил процесс adb, принудительно подключился к 127.0.0.1:62001 и теперь всё нормально запустилось... adb использую из папки sdk теперь.
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    57,1 KB · Просмотры: 333
Последнее редактирование:
Так в том и дело, что сюда лезут те, у кого есть какие-то навыки :-) А я их не имею, но желаю разобраться.
Дошёл до пункта кликов, не могу никак сообразить как правильно Xpath нужного элемента прописывать. В первом сообщении есть туториал xpath, но с ним проблема..
Команды пишу через cmd(из папки с ноксом). Подключённое устройство видит.

Понимаю что пишет о несовместимости, но что удалить\переустановить? всё заново уже скачивал - тоже самое.





UP: убил процесс adb, принудительно подключился к 127.0.0.1:62001 и теперь всё нормально запустилось... adb использую из папки sdk теперь.

C:\Program Files (x86)\Nox\bin - путь может отличаться

Здесь нужно удалить 2 файла: adb и nox_adb. Тогда все будет работать корректно, если установлен SDK.
 
  • Спасибо
Реакции: loka23
Приветствую всех.У меня такой вопрос по парсингу.Парсер парсит данные со страницы в столбик,верно? А есть ли возможность,чтоб он это делал в строчку.Спарсил всё,а затем обработкой уложил в строку-не подходит,так как нужно,чтобы из блока (в котором есть скажем 3-4 параметра) он парсил каждый и через какой-то знак (скажем двоеточие) записывал в строку.Пример на скрине:

Screenshot_2.png


Нужно в 1 строку спарсить 4 значения (стрелками показано) В данном примере нужно спарсить то,что выделено синим жирным шрифтом,зелёным шрифтом,текст,который под зелёным шрифтом,слово реклама.И я даже не против это парсить 4 раза.Но как их сложить в 1 строку,чтобы они не смешались.
 
Спасибо большое автору, много нового и почти готовый набор из коробки. Следующую часть, думаю, не только я жду.
Возможно ли решение такой капчи в приложении?
63723
 
  • Спасибо
Реакции: WLDN
Спасибо большое автору, много нового и почти готовый набор из коробки. Следующую часть, думаю, не только я жду.
Возможно ли решение такой капчи в приложении?
Возможно. Можно использовать комбинацию: скриншот через adb + готовый вариант решения пазла из бесплатного шаблона тикток для клиентов ZennoLab. Можно найти на форуме.
 
  • Спасибо
Реакции: lomshakov
Вот в эмуляторе id process определяется соответствующим кодом в шаблоне.
А вот на реальных трубках, может кто нибудь подсказать (кто запускал на смартфонах): как узнать id процесса?
 
Вот в эмуляторе id process определяется соответствующим кодом в шаблоне.
А вот на реальных трубках, может кто нибудь подсказать (кто запускал на смартфонах): как узнать id процесса?
В трубке не может быть такого process id, потому что она не запущена на винде, а идет как самостоятельное устройство :-) Внутри андроида есть айди процессов приложений, но я так понимаю это не то что тебе нужно.
 
@WLDN привет! Такое дело - выполнение иногда зависает. То на вводе какого-нибудь логина/пароля, то при ожидании, когда текст обновится в эмуляторе и шаб пойдёт дальше. Но зависает с такими симптомами, которые явно дают понять, что это не методы мои криво написаны. Тут на более глубоком уровне. К примеру: можно до ввести пароль и нажать ок, можно переключить фокус этого приложения на другое, можно вообще закрыть приложение, можно закрыть все приложения - но шаблон тупо стоит на месте и никак не реагирует на происходящее в эмуляторе. А вот как только закрою эмулятор, в логе тут же пишет ошибку:
An error occurred while reading a response from ADB: device offline
Вот уже несколько дней, или даже вторую неделю пытаюсь поймать где это зависание/зацикливание происходит, но в своих методах я его не нашёл. Поиски привели меня к такому методу:
AdbClient.Instance.ExecuteRemoteCommand(String.Format(@"input tap {0} {1}", x, y), device, receiver);
Но вот что тут может происходить не так, что происходит зависание? Подскажи пожалуйста, очень рассчитываю на твой колоссальный опыт по работе с эмуляторами)))
 
@WLDN привет! Такое дело - выполнение иногда зависает. То на вводе какого-нибудь логина/пароля, то при ожидании, когда текст обновится в эмуляторе и шаб пойдёт дальше. Но зависает с такими симптомами, которые явно дают понять, что это не методы мои криво написаны. Тут на более глубоком уровне. К примеру: можно до ввести пароль и нажать ок, можно переключить фокус этого приложения на другое, можно вообще закрыть приложение, можно закрыть все приложения - но шаблон тупо стоит на месте и никак не реагирует на происходящее в эмуляторе. А вот как только закрою эмулятор, в логе тут же пишет ошибку:
An error occurred while reading a response from ADB: device offline
Вот уже несколько дней, или даже вторую неделю пытаюсь поймать где это зависание/зацикливание происходит, но в своих методах я его не нашёл. Поиски привели меня к такому методу:
AdbClient.Instance.ExecuteRemoteCommand(String.Format(@"input tap {0} {1}", x, y), device, receiver);
Но вот что тут может происходить не так, что происходит зависание? Подскажи пожалуйста, очень рассчитываю на твой колоссальный опыт по работе с эмуляторами)))
Привет, скорее всего дело в коде библиотеки. Копай туда... Я решил эту проблему перезагрузкой эмулятора.
 
Я решил эту проблему перезагрузкой эмулятора.
Да, помню, ты что-то такое писал. Вот только как ты узнаёшь, что что-то зависло? Вспомогательным шаблоном проверку делаешь?
 
Да, помню, ты что-то такое писал. Вот только как ты узнаёшь, что что-то зависло? Вспомогательным шаблоном проверку делаешь?
Чекпоинт делаю. Если через определенное время чекпоинт не проходится, то сигнал на перезагрузку.
 
Друзья подскажите. в чём не прав. Вроде всё перепробовал. Не хочет не кликать не писать.



Поле активно(мигает курсор)
a.Text(project.Variables["password"].Value);

a.Click("//node[@text='Password' and @class='android.widget.EditText']", 0, 10);
a.Click("//node[@text='Password']", 0, 10);
a.Click("//node[@resource-id='com.facebook.katana:id/(name removed)' and @class='android.widget.EditText']", 0, 10);



64406
 
Последнее редактирование:
Друзья подскажите. в чём не прав. Вроде всё перепробовал. Не хочет не кликать не писать.



Поле активно(мигает курсор)
a.Text(project.Variables["password"].Value);

a.Click("//node[@text='Password' and @class='android.widget.EditText']", 0, 10);
a.Click("//node[@text='Password']", 0, 10);
a.Click("//node[@resource-id='com.facebook.katana:id/(name removed)' and @class='android.widget.EditText']", 0, 10);
Тоже фэйсбук? Ох и намучаешься ты с ним))
 
В MEmu параметр @text='русский шрифт' не понимает(ошибка). Кто то решил это вопрос ?

ввод кириллицы в поля тоже самое ! Если добавить например точку то ввод будет, но ?????.
 
Последнее редактирование:
Чекпоинт делаю. Если через определенное время чекпоинт не проходится, то сигнал на перезагрузку.
Это в том же шаблоне реализовано, что ты в этой ветке скинул? Не нашёл там такого((
 
Если кликать по юникод имени, то тут нужно обратно конвертировать utf-8 в ISO-8859-1

C#:
Развернуть Свернуть Копировать
string text = project.Variables["test2"].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); // Результат: Ðаказ звонка ÑеÑниÑеÑкой поддеÑжки

А потом данный результат вставлять в xpatx поиск по тексту

Типа так
C#:
Развернуть Свернуть Копировать
a.Click("//node[@text='Ðнопка' and @class='android.widget.TextView']", 0, 10); //XPath, Index, Секунды

Друзья а у всех ли работает буква "х" русская ? не могу "подружить" эту букву :(
Вот она 'Ñ'

64960
 
такой вопрос возник. при получении дампа с реального телефона, русские буквы заменены знаками вопросов как это вылечить? если на эмуляторе кракозябры (не знаки вопроса) лечатся изменением кодировки, то на реальном устройстве даже при получении дампа через ui automator viewer вместо русских букв знаки ????????????????.
 
такой вопрос возник. при получении дампа с реального телефона, русские буквы заменены знаками вопросов как это вылечить? если на эмуляторе кракозябры (не знаки вопроса) лечатся изменением кодировки, то на реальном устройстве даже при получении дампа через ui automator viewer вместо русских букв знаки ????????????????.
включи в настройках трубки английский - по умолчанию, я так работаю
 
  • Спасибо
Реакции: radv
включи в настройках трубки английский - по умолчанию, я так работаю
тогда с русскими буквами проблем не будет? Ты имеешь ввиду язык ввода по умолчанию на англ переключить? или системный интерфейс как то переключить?
 
и еще один вопрос, как с webview браузера работать. Элементы не всегда видны как отдельные. куда копать?
 
тогда с русскими буквами проблем не будет? Ты имеешь ввиду язык ввода по умолчанию на англ переключить? или системный интерфейс как то переключить?
системный в настройках , русских надписей не будет ( кроме переписки , там другой метод - тс вроде продавал его)
 
Это у тебя ошибка в самом коде какая то
"Бытовая техника" ошибка как в скрине
"Бытовая теника" работает, ошибок нет в логах
сразу вопрос.. в каком коде может быть ошибка ?
 
Подскажите есть ли возможность установить уникальный прокси каждому отдельному эмулятору через adb?
Есть команда adb shell settings put global http_proxy 354.574.57.90:8080 но она ставит одну проксю глобально на все эмуляторы(
 
Подскажите есть ли возможность установить уникальный прокси каждому отдельному эмулятору через adb?
Есть команда adb shell settings put global http_proxy 354.574.57.90:8080 но она ставит одну проксю глобально на все эмуляторы(
С помощью библиотеки и команды Command будет ставить конкретному

ADB:
Развернуть Свернуть Копировать
a.Command("settings put global http_proxy 354.574.57.90:8080", false);
 
  • Спасибо
Реакции: Dorian_Gray, Koqpe и Gang
Скажите пожалуйста,а есть ли возможность менять размеры экрана в nox? В текстовом редакторе можно заменить размеры на свои значения,но при запуске nox,размеры возвращаются к дефолтным.
 

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