4 место Управление любыми Android приложениями на смартфоне из ZP

Если у кого-то есть подобное решения для WhatsApp, я бы заказал шаблон для допиливания под мои нужды. Мне нужно неспешно рассылать сообщения по списку контактов и, возможно, чтобы он автоматом отвечал на некоторые типовые реплики, а так ответы сохранял в таблицу.
Возможно Вы в курсе, но все же. У WhatsApp есть вебверсия, я использовал связку NOX (для залогивания в вебверсии) и зеннопостер (непосредственно для работы в вебверсии ).
 
Последнее редактирование:
  • Спасибо
Реакции: Nick
Ой, это клёво) А поделись шабом? Можем поменяться на что-нибудь... :-)
 
Подскажите как собрать элементы с одинаковыми значениями. Учитывая что меняется только index у родителя.
LSRvVHBnfD0.jpg
_M4jPM73tM0.jpg

Или может возможно получить дамп и выдернуть через regex?
 
Подскажите как собрать элементы с одинаковыми значениями. Учитывая что меняется только index у родителя.
LSRvVHBnfD0.jpg
_M4jPM73tM0.jpg

Или может возможно получить дамп и выдернуть через regex?
собирай в список через findElements
 
  • Спасибо
Реакции: garat
А кто работает с эмуляторами? Проблема в том, что многие данные передаются, начиная от device Id, IMEI, WIFI SSID, device name и пр. Работаю с Genymotion. Установил xposed framework, установил модуль Device Faker, (мне это больше понравилось https://github.com/bigsinger/AndroidIdChanger , но очень часто эмуль не грузился, если версия андройд была выше)вроде бы эмулирует, открываешь cpu_z или aida64 значения меняются, открываю tumblr или инсту, fiddler смотрю запросы, там палится и инфа берется через build.prop, меняю, все ок.
Но где можно взять список девайсов???
Кто еще как эмулирует?
Кстати это также относится и к реальным девайсам.
 
А кто работает с эмуляторами? Проблема в том, что многие данные передаются, начиная от device Id, IMEI, WIFI SSID, device name и пр. Работаю с Genymotion. Установил xposed framework, установил модуль Device Faker, (мне это больше понравилось https://github.com/bigsinger/AndroidIdChanger , но очень часто эмуль не грузился, если версия андройд была выше)вроде бы эмулирует, открываешь cpu_z или aida64 значения меняются, открываю tumblr или инсту, fiddler смотрю запросы, там палится и инфа берется через build.prop, меняю, все ок.
Но где можно взять список девайсов???
Кто еще как эмулирует?
Кстати это также относится и к реальным девайсам.
Используй этот (уже предустановлены устройства) https://play.google.com/store/apps/details?id=com.devicefaker.free&hl=ru
 
Эм. Как я писал, уже ставил и стояла про версия. Может есть решения не на xposed framework, а apk ?
 
У кого не получается найти активити стартовое, открывайте Android Studio, заходите в терминал - внизу и вбиваете команды. (потому что винда плохо воспринимает одинарные кавычки) или
Код:
Развернуть Свернуть Копировать
Перейти в каталог c:\Android\sdk\build-tools\25.0.2 где лежит aapt.exe
adb shell pm list packages -f
adb pull путь из списка до APK, до =
aapt dump badging base.apk
launchable-activity: name - это и есть активити стартовое.
 
  • Спасибо
Реакции: irving zisman и braycho
Какой надо Using подключить, чтобы сделать проверку кликабельности кнопки?

Код:
Развернуть Свернуть Копировать
Boolean fname = driver.FindElement(By.XPath("//android.widget.Button[contains(@resource-id, 'action_button')]")).isEnabled();
if(fname){
    project.SendInfoToLog("Get Started");
}

UPD
Сделал через. Но все равно не понятно, как получить булевое значение состояния кнопки.

Код:
Развернуть Свернуть Копировать
var fname = driver.FindElement(By.XPath("//android.widget.Button[contains(@resource-id, 'action_button')]")).GetAttribute("enabled");
project.SendInfoToLog(fname);
 
Последнее редактирование:
Как инициализировать sendKeys без "clear" данных по умолчанию в apk?
appium пытаеться очистить поле, но приложение сразу восстанавливает исходное значение, в итоге после 2-3 попыток clear text, appium заполняет отправленный sendKeys, в итоге изза того что курсор ввода в эмуляторе сбиваеться при очистке поля результат заполнения кривой.
Как можно дописать поле без clear? Или как взаимодействовать параметр replace (по умолчанию replace:"false")?
 
Попробуй кликнуть по координатам, а потом
using OpenQA.Selenium.Interactions;

Код:
Развернуть Свернуть Копировать
Actions typing = new Actions(driver);
typing .SendKeys("TEXT").Build().Perform();
 
Попробуй кликнуть по координатам, а потом
using OpenQA.Selenium.Interactions;

Код:
Развернуть Свернуть Копировать
Actions typing = new Actions(driver);
typing .SendKeys("TEXT").Build().Perform();

1/5 заполняет корректно, но с проверкой @text, очисткой в случае не соответствия тратиться много времени + геморойненько


p.s. поддержка adb shell вроде как присутствует, только не соображу как инициализировать exec с adb shell input text (плюс в карму за пример кода Си :3 )
 
1/5 заполняет корректно, но с проверкой @text, очисткой в случае не соответствия тратиться много времени + геморойненько


p.s. поддержка adb shell вроде как присутствует, только не соображу как инициализировать exec с adb shell input text (плюс в карму за пример кода Си :3 )
adb команды можно посылать и без Appium
Код:
Развернуть Свернуть Копировать
var text = project.Variables["text"].Value;//берем текст с проекта и ложим в переменную
ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = @"adb.exe";
startInfo1.Arguments = @"shell input text "+text;//параметры выполнения adb команды
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
Process.Start(startInfo5).WaitForExit();//запускаем процесс и дожидаемся выполнения
 
А есть варианты приложение в исходное состояние возвращать?
 
А есть варианты приложение в исходное состояние возвращать?
Можно запустить сервер с флагом --full-reset

Или через adb команду (C#):
Код:
Развернуть Свернуть Копировать
ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = @"adb.exe";
startInfo1.Arguments = @"shell pm clear com.instagram.android";
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo1).WaitForExit();
 
  • Спасибо
Реакции: Anatoliy777
Можно запустить сервер с флагом --full-reset

Или через adb команду (C#):
Код:
Развернуть Свернуть Копировать
ProcessStartInfo startInfo1 = new ProcessStartInfo();
startInfo1.FileName = @"adb.exe";
startInfo1.Arguments = @"shell pm clear com.instagram.android";
startInfo1.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo1).WaitForExit();
За подсказку спасибо, но так приложение сносит к чертям собачим.
Решил через
Код:
Развернуть Свернуть Копировать
adb shell pm clear com.package.foo
 
За подсказку спасибо, но так приложение сносит к чертям собачим.
Решил через
Код:
Развернуть Свернуть Копировать
adb shell pm clear com.package.foo
--full reset вернет устройство к первоначальному состоянию,т.е. если будут установлены приложения, то они удалятся.
А второй вариант ничего не сносит, он чистит кэш приложения как и ты написал в своем примере, только у меня пример на c#, чтобы не плодить батники
 
  • Спасибо
Реакции: Anatoliy777
--full reset вернет устройство к первоначальному состоянию,т.е. если будут установлены приложения, то они удалятся.
А второй вариант ничего не сносит, он чистит кэш приложения как и ты написал в своем примере, только у меня пример на c#, чтобы не плодить батники
У меня там шаб, сплошной костыль. У меня код активации даже через OCR скриншота распознается :)Поэтому 1 лишний батник батник устраивает.
Теперь моя задача проксю устанавливать на соединение.
 
У меня там шаб, сплошной костыль. У меня код активации даже через OCR скриншота распознается :-)Поэтому 1 лишний батник батник устраивает.
Теперь моя задача проксю устанавливать на соединение.
По прокси на соединение https://github.com/jpkrause/AndroidProxySetter
 
Как спарсить текст с атрибута "text" или "resourse-id" ?
 
Друзья, а вот как бы открыть в браузере ссылку?
 
Как спарсить текст с атрибута "text" или "resourse-id" ?
Берем с resource-id edtImei и ложим в переменную проекта IMEI
Код:
Развернуть Свернуть Копировать
project.Variables["IMEI"].Value = driver.FindElementByXPath("//android.widget.EditText[contains(@resource-id, 'edtImei')]").Text;
 
Берем с resource-id edtImei и ложим в переменную проекта IMEI
Код:
Развернуть Свернуть Копировать
project.Variables["IMEI"].Value = driver.FindElementByXPath("//android.widget.EditText[contains(@resource-id, 'edtImei')]").Text;
А как мне спарсить в переменную Значение поля текст? В поле текст каждый раз будет разное значение. Как мы можем его получать?
 

Вложения

  • Безымянный.png
    Безымянный.png
    11,3 KB · Просмотры: 715
Последнее редактирование:
А как мне спарсить в переменную Значение поля текст? В поле текст каждый раз будет разное значение. Как мы можем его получать?
PHP:
Развернуть Свернуть Копировать
project.Variables["username"].Value = driver.FindElementByXPath("//android.widget.EditText[contains(@resource-id, 'username')]").GetAttribute("text");
 
Друзья, а вот как бы открыть в браузере ссылку?
Вариант 1. Средствами adb. Через Батник. Если adb не указан в переменных средах, то добавить путь до adb.
Код:
Развернуть Свернуть Копировать
adb shell am start -a android.intent.action.VIEW -d http://zennolab.com
Вариант 2. Средствами adb,но через C# код в кубике.
PHP:
Развернуть Свернуть Копировать
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"adb";
startInfo.Arguments = @"shell am start -a android.intent.action.VIEW -d http://zennolab.com";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo).WaitForExit();
Вариант 3. Средствами Appium. Нужно зайти в браузер перед этим
PHP:
Развернуть Свернуть Копировать
driver.Navigate().GoToUrl("http://zennolab.com");
 
Друзья, а из того всего можно как-то сделать многопоток?
 
Как продолжить код в другом C#? Это допустим первый С#

upload_2017-8-16_12-35-9.png

Это второй C# (он не работает, как продолжить?)

upload_2017-8-16_12-36-20.png
 
Как продолжить код в другом C#? Это допустим первый С#


Это второй C# (он не работает, как продолжить?)


в конце первого добавь
Код:
Развернуть Свернуть Копировать
project.Context["drv"]= driver;
в начале второго
Код:
Развернуть Свернуть Копировать
var driver = project.Context["drv"];
 

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