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

WLDN

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

loka23

Client
Регистрация
02.08.2019
Сообщения
134
Благодарностей
10
Баллы
18
С помощью C# сниппетов в ProjectMaker.
Всё равно не понял:au: В статье написано про выполнение команд adb через cmd. А как их выполнять через C# кубики?

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

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Всё равно не понял: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 из папки с эмулятором.
 

loka23

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

Вложения

Последнее редактирование:

dizney

Client
Регистрация
25.01.2014
Сообщения
51
Благодарностей
52
Баллы
18
Так в том и дело, что сюда лезут те, у кого есть какие-то навыки :-) А я их не имею, но желаю разобраться.
Дошёл до пункта кликов, не могу никак сообразить как правильно Xpath нужного элемента прописывать. В первом сообщении есть туториал xpath, но с ним проблема..
Команды пишу через cmd(из папки с ноксом). Подключённое устройство видит.

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





UP: убил процесс adb, принудительно подключился к 127.0.0.1:62001 и теперь всё нормально запустилось... adb использую из папки sdk теперь.
C:\Program Files (x86)\Nox\bin - путь может отличаться

Здесь нужно удалить 2 файла: adb и nox_adb. Тогда все будет работать корректно, если установлен SDK.
 
  • Спасибо
Реакции: loka23

Szerzs

Client
Регистрация
15.06.2019
Сообщения
259
Благодарностей
68
Баллы
28
Приветствую всех.У меня такой вопрос по парсингу.Парсер парсит данные со страницы в столбик,верно? А есть ли возможность,чтоб он это делал в строчку.Спарсил всё,а затем обработкой уложил в строку-не подходит,так как нужно,чтобы из блока (в котором есть скажем 3-4 параметра) он парсил каждый и через какой-то знак (скажем двоеточие) записывал в строку.Пример на скрине:

Screenshot_2.png


Нужно в 1 строку спарсить 4 значения (стрелками показано) В данном примере нужно спарсить то,что выделено синим жирным шрифтом,зелёным шрифтом,текст,который под зелёным шрифтом,слово реклама.И я даже не против это парсить 4 раза.Но как их сложить в 1 строку,чтобы они не смешались.
 

lomshakov

Client
Регистрация
25.11.2019
Сообщения
18
Благодарностей
17
Баллы
3
Спасибо большое автору, много нового и почти готовый набор из коробки. Следующую часть, думаю, не только я жду.
Возможно ли решение такой капчи в приложении?
63723
 
  • Спасибо
Реакции: WLDN

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Спасибо большое автору, много нового и почти готовый набор из коробки. Следующую часть, думаю, не только я жду.
Возможно ли решение такой капчи в приложении?
Возможно. Можно использовать комбинацию: скриншот через adb + готовый вариант решения пазла из бесплатного шаблона тикток для клиентов ZennoLab. Можно найти на форуме.
 
  • Спасибо
Реакции: lomshakov

Szerzs

Client
Регистрация
15.06.2019
Сообщения
259
Благодарностей
68
Баллы
28
Вот в эмуляторе id process определяется соответствующим кодом в шаблоне.
А вот на реальных трубках, может кто нибудь подсказать (кто запускал на смартфонах): как узнать id процесса?
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Вот в эмуляторе id process определяется соответствующим кодом в шаблоне.
А вот на реальных трубках, может кто нибудь подсказать (кто запускал на смартфонах): как узнать id процесса?
В трубке не может быть такого process id, потому что она не запущена на винде, а идет как самостоятельное устройство :-) Внутри андроида есть айди процессов приложений, но я так понимаю это не то что тебе нужно.
 

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
790
Благодарностей
136
Баллы
43
@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

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
@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);
Но вот что тут может происходить не так, что происходит зависание? Подскажи пожалуйста, очень рассчитываю на твой колоссальный опыт по работе с эмуляторами)))
Привет, скорее всего дело в коде библиотеки. Копай туда... Я решил эту проблему перезагрузкой эмулятора.
 

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
790
Благодарностей
136
Баллы
43
Я решил эту проблему перезагрузкой эмулятора.
Да, помню, ты что-то такое писал. Вот только как ты узнаёшь, что что-то зависло? Вспомогательным шаблоном проверку делаешь?
 

WLDN

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

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Друзья подскажите. в чём не прав. Вроде всё перепробовал. Не хочет не кликать не писать.



Поле активно(мигает курсор)
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
 
Последнее редактирование:

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
790
Благодарностей
136
Баллы
43
Друзья подскажите. в чём не прав. Вроде всё перепробовал. Не хочет не кликать не писать.



Поле активно(мигает курсор)
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);
Тоже фэйсбук? Ох и намучаешься ты с ним))
 

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
В MEmu параметр @text='русский шрифт' не понимает(ошибка). Кто то решил это вопрос ?

ввод кириллицы в поля тоже самое ! Если добавить например точку то ввод будет, но ?????.
 
Последнее редактирование:

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
790
Благодарностей
136
Баллы
43
Чекпоинт делаю. Если через определенное время чекпоинт не проходится, то сигнал на перезагрузку.
Это в том же шаблоне реализовано, что ты в этой ветке скинул? Не нашёл там такого((
 

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Если кликать по юникод имени, то тут нужно обратно конвертировать 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
 

ezotonal

Client
Регистрация
13.01.2014
Сообщения
819
Благодарностей
231
Баллы
43

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
такой вопрос возник. при получении дампа с реального телефона, русские буквы заменены знаками вопросов как это вылечить? если на эмуляторе кракозябры (не знаки вопроса) лечатся изменением кодировки, то на реальном устройстве даже при получении дампа через ui automator viewer вместо русских букв знаки ????????????????.
 

sergio197675

Client
Регистрация
21.09.2019
Сообщения
360
Благодарностей
318
Баллы
63
такой вопрос возник. при получении дампа с реального телефона, русские буквы заменены знаками вопросов как это вылечить? если на эмуляторе кракозябры (не знаки вопроса) лечатся изменением кодировки, то на реальном устройстве даже при получении дампа через ui automator viewer вместо русских букв знаки ????????????????.
включи в настройках трубки английский - по умолчанию, я так работаю
 
  • Спасибо
Реакции: radv

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
включи в настройках трубки английский - по умолчанию, я так работаю
тогда с русскими буквами проблем не будет? Ты имеешь ввиду язык ввода по умолчанию на англ переключить? или системный интерфейс как то переключить?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
и еще один вопрос, как с webview браузера работать. Элементы не всегда видны как отдельные. куда копать?
 

sergio197675

Client
Регистрация
21.09.2019
Сообщения
360
Благодарностей
318
Баллы
63
тогда с русскими буквами проблем не будет? Ты имеешь ввиду язык ввода по умолчанию на англ переключить? или системный интерфейс как то переключить?
системный в настройках , русских надписей не будет ( кроме переписки , там другой метод - тс вроде продавал его)
 

baracuda

Client
Регистрация
19.06.2013
Сообщения
793
Благодарностей
278
Баллы
63
Это у тебя ошибка в самом коде какая то
"Бытовая техника" ошибка как в скрине
"Бытовая теника" работает, ошибок нет в логах
сразу вопрос.. в каком коде может быть ошибка ?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113

Gang

Client
Регистрация
04.04.2010
Сообщения
579
Благодарностей
313
Баллы
63
Подскажите есть ли возможность установить уникальный прокси каждому отдельному эмулятору через adb?
Есть команда adb shell settings put global http_proxy 354.574.57.90:8080 но она ставит одну проксю глобально на все эмуляторы(
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Подскажите есть ли возможность установить уникальный прокси каждому отдельному эмулятору через 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

Szerzs

Client
Регистрация
15.06.2019
Сообщения
259
Благодарностей
68
Баллы
28
Скажите пожалуйста,а есть ли возможность менять размеры экрана в nox? В текстовом редакторе можно заменить размеры на свои значения,но при запуске nox,размеры возвращаются к дефолтным.
 

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