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

Alex_Follow

Client
Регистрация
12.12.2017
Сообщения
16
Благодарностей
19
Баллы
3

diamlan

Client
Регистрация
14.09.2019
Сообщения
113
Благодарностей
18
Баллы
18
После команды dumpsys window windows | grep -E ‘mCurrentFocus|mFocusedApp’
пишет вот что
Безымянный.jpg
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63

Alex_Follow

Client
Регистрация
12.12.2017
Сообщения
16
Благодарностей
19
Баллы
3
Последнее редактирование:
  • Спасибо
Реакции: Dimon174, brun0 и udder

diamlan

Client
Регистрация
14.09.2019
Сообщения
113
Благодарностей
18
Баллы
18
помогите разобраться
"C:/Program Files (x86)/Appium/node.exe" "C:/Program Files (x86)/Appium/node_modules/appium/bin/Appium.js" --address 127.0.0.1 --chromedriver-port 9516 --bootstrap-port 4725 --selendroid-port 8082 --no-reset --local-timezone
У меня по данным путям ничего нету

win 7 x64

Возможно нужно установить старую версию appium?
 

Alex_Follow

Client
Регистрация
12.12.2017
Сообщения
16
Благодарностей
19
Баллы
3
помогите разобраться
"C:/Program Files (x86)/Appium/node.exe" "C:/Program Files (x86)/Appium/node_modules/appium/bin/Appium.js" --address 127.0.0.1 --chromedriver-port 9516 --bootstrap-port 4725 --selendroid-port 8082 --no-reset --local-timezone
У меня по данным путям ничего нету

win 7 x64

Возможно нужно установить старую версию appium?

Я с этими библиотеками работаю https://zennolab.com/discussion/threads/upravlenie-ljubymi-android-prilozhenijami-na-smartfone-iz-zp.33511/page-7#post-281052, но пути в батниках поменять надо.
Советую прочитать все коментарии, здесь много полезного
 
  • Спасибо
Реакции: dsertr21
Регистрация
23.03.2015
Сообщения
1 222
Благодарностей
765
Баллы
113
После: dumpsys window windows | grep -E ‘mCurrentFocus|mFocusedApp’
Выдаёт:
C#:
/system/bin/sh: mFocusedApp: not found
/system/bin/sh: mCurrentFocus: not found
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num]]
        [-e pattern] [-f file] [--binary-files=value] [--color=when]
        [--context[=num]] [--directories=action] [--label] [--line-buffered]
        [pattern] [file ...]
Что я делаю не так?
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63
Оли
После: dumpsys window windows | grep -E ‘mCurrentFocus|mFocusedApp’
Выдаёт:
C#:
/system/bin/sh: mFocusedApp: not found
/system/bin/sh: mCurrentFocus: not found
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num]]
        [-e pattern] [-f file] [--binary-files=value] [--color=when]
        [--context[=num]] [--directories=action] [--label] [--line-buffered]
        [pattern] [file ...]
Что я делаю не так?
Одиночные кавычки вручную проставь. При копипасте другие копируются.
 
  • Спасибо
Реакции: KolkaPetkinSyn

Fantomass

Client
Регистрация
13.04.2016
Сообщения
87
Благодарностей
38
Баллы
18
Прошу помочь тех, кто знает. Каждый раз при попытке что-то сделать на эмуляторе Memu, выскакивает вот такое окошко:

errrr.png


Убрать его можно, нажав "отклонить" вручную, пытался сделать это с помощью зеннопостера - ни в какую. Как это вылечить?
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63
Прошу помочь тех, кто знает. Каждый раз при попытке что-то сделать на эмуляторе Memu, выскакивает вот такое окошко:

Посмотреть вложение 43049

Убрать его можно, нажав "отклонить" вручную, пытался сделать это с помощью зеннопостера - ни в какую. Как это вылечить?
Загугли. Через настройки отключается защита.
 

Fantomass

Client
Регистрация
13.04.2016
Сообщения
87
Благодарностей
38
Баллы
18
Загугли. Через настройки отключается защита.
Знаю, что через настройки можно отключить. Вопрос был в том, можно ли это сделать не руками, а с помощью зеннопостера?
 
D

Dronhik

Guest
Определяете год (день, месяц) по атрибуту text:
C#:
driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'year')]").GetAttribute("text");
Если год (день, месяц) больше или меньше нужного значения, то делаете несколько свайпов вверх или вниз. И так в цикле, пока не выставите нужную дату.

А что прописать в этой в этой строке чтобы значение бралось из поле которое второе по соврадению.
Т.к. у поля ввода дня месяца и года один и тот же класс и id

Если искать по обычной конструкции то берет значение из первого совпадения(поля) то есть берет день, как брать из двух других полей


Пытался искать по конструкции предложенным автором статьи:
C#:
driver.FindElementsByClassName("android.widget.EditText").Where(f=> f.Text == "окт.").First().GetAttribute("text");
Ошибка: не удается искользовать лямбда-выражение в качестве аргументадля динамически отправляемой операции без предварительного преобразования его в делегат или дерево выражений

Заранее спасибо)
 
  • Спасибо
Реакции: webstudioNSS

Monitor

Client
Регистрация
27.12.2016
Сообщения
61
Благодарностей
37
Баллы
18
А что прописать в этой в этой строке чтобы значение бралось из поле которое второе по соврадению.
Т.к. у поля ввода дня месяца и года один и тот же класс и id

Если искать по обычной конструкции то берет значение из первого совпадения(поля) то есть берет день, как брать из двух других полей
Вижу 2 возможных варианта решения:
1. Собираешь в коллекцию все одинаковые классы и перебираешь их в цикле, пока не встретится нужный элемент:
C#:
var MyDate = driver.FindElementsByXPath("//android.widget.TextView[contains(@resource-id, 'date')]");
for (int a = 0; a < MyDate.Count; a++ )    {
    if (MyDate.ElementAt(a).Text == "НУЖНОЕ ЗНАЧЕНИЕ") {
        break;
    }
}
2. Если точно известен порядковый номер элемента в коллекции, то можно обратиться к нему напрямую, используя XPath:
C#:
driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'date')][2]");
 
Последнее редактирование:
  • Спасибо
Реакции: Hanma, Dronhik и Koqpe
D

Dronhik

Guest
Вижу 2 возможных варианта решения:
1. Собираешь в коллекцию все одинаковые классы и перебираешь их в цикле, пока не встретится нужный элемент:
C#:
var MyDate = driver.FindElementsByXPath("//android.widget.TextView[contains(@resource-id, 'date')]");
for (int a = 0; a < MyDate.Count; a++ )    {
    if (MyDate.ElementAt(a).Text == "НУЖНОЕ ЗНАЧЕНИЕ") {
        break;
    }
}
2. Если точно известен порядковый номер элемента в коллекции, то можно обратиться к нему напрямую, используя XPath:
C#:
driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'date')][2]");

Второй варит должен отлично подойти
Спасибо еще раз, проверю чуть позже)

Уже вроде спрашивал, где все смотрят синтаксис и никто не колитца) в документации у appium на c# для большинста действий нет примеров(
 
Последнее редактирование модератором:
D

Dronhik

Guest
Прошу помочь тех, кто знает. Каждый раз при попытке что-то сделать на эмуляторе Memu, выскакивает вот такое окошко:

Посмотреть вложение 43049

Убрать его можно, нажав "отклонить" вручную, пытался сделать это с помощью зеннопостера - ни в какую. Как это вылечить?
Юзай NOX, сам перешел с Memu на него, стабильность +1473₽39303

Хоть выше и писали что с adb у него напортачено сейчас последняя версия у меня работает, все супер. Даже можно клоны с ПК на ПК переносить и сохраняются данные в приложениях

Порты 62001, 62025-26-27 и тд
Или слушай программой

Кушает ресурсов больше конечно, но это лучше чем бороться с кучей ошибок, особенно если работать нужно в один поток
 
  • Спасибо
Реакции: Gang
D

Dronhik

Guest
2. Если точно известен порядковый номер элемента в коллекции, то можно обратиться к нему напрямую, используя XPath:
C#:
driver.FindElementByXPath("//android.widget.TextView[contains(@resource-id, 'date')][2]");

Да, попытался использовать эту конструкцию, идеально бы подошла, вот как получается у меня лежит необходимое поле(айди менял конечно же)

То есть ставить просто 1, значение берется из первого поля(выделено черным), а если ставить двойку соответственно уже не находит, как прописать чтобы обращалось сначала к 0(выделено синим) и потом к самому полю уже соответственно(выделено зеленым).
Безымянный.jpg
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63
Юзай NOX, сам перешел с Memu на него, стабильность +1473₽39303

Хоть выше и писали что с adb у него напортачено сейчас последняя версия у меня работает, все супер. Даже можно клоны с ПК на ПК переносить и сохраняются данные в приложениях

Порты 62001, 62025-26-27 и тд
Или слушай программой

Кушает ресурсов больше конечно, но это лучше чем бороться с кучей ошибок, особенно если работать нужно в один поток
я также перепробывал кучу эмуляторов. запарился решать ошибки с memu. хоть и решил. всеже у меня nox работает стабильно без ошибок в многопотоке.
 
  • Спасибо
Реакции: Gang

Monitor

Client
Регистрация
27.12.2016
Сообщения
61
Благодарностей
37
Баллы
18
Да, попытался использовать эту конструкцию, идеально бы подошла, вот как получается у меня лежит необходимое поле(айди менял конечно же)

То есть ставить просто 1, значение берется из первого поля(выделено черным), а если ставить двойку соответственно уже не находит, как прописать чтобы обращалось сначала к 0(выделено синим) и потом к самому полю уже соответственно(выделено зеленым).
Посмотреть вложение 43078
Попробуй так. К синему полю:
C#:
driver.FindElementByXPath("//android.widget.LinearLayout[contains(@resource-id, 'ЗНАЧЕНИЕ')]/android.widget.NumberPicker[2]");
и к зеленому полю:
C#:
driver.FindElementByXPath("//android.widget.LinearLayout[contains(@resource-id, 'ЗНАЧЕНИЕ')]/android.widget.NumberPicker[2]/android.widget.EditText");
Здесь нужно играть с XPath и пробовать разные инструменты этого языка. Возможно, нужно обратиться к элементу-предку или элементу-потомку. Сложно сказать, не видя дерева элементов и их значения. Много полезного по XPath можно найти в разных справочниках и примерах: раз, два, три.
 
  • Спасибо
Реакции: Dronhik
D

Dronhik

Guest
Попробуй так. К синему полю:
C#:
driver.FindElementByXPath("//android.widget.LinearLayout[contains(@resource-id, 'ЗНАЧЕНИЕ')]/android.widget.NumberPicker[2]");
и к зеленому полю:
C#:
driver.FindElementByXPath("//android.widget.LinearLayout[contains(@resource-id, 'ЗНАЧЕНИЕ')]/android.widget.NumberPicker[2]/android.widget.EditText");
Здесь нужно играть с XPath и пробовать разные инструменты этого языка. Возможно, нужно обратиться к элементу-предку или элементу-потомку. Сложно сказать, не видя дерева элементов и их значения. Много полезного по XPath можно найти в разных справочниках и примерах: раз, два, три.
Во литература это самое главное вообще, понял, спасибо еще раз, попробую вечером))
 

limarkximus

Client
Регистрация
01.08.2019
Сообщения
115
Благодарностей
73
Баллы
28
есть несколько способов для поиска текущего активити
так возьми и напиши несколько... вот честно вот так напрягают такие челы... просто ужас... особенно когда по долгу сидишь за компом и попадаются такого рода ответы.. нечего сказать так промолчи... гений тво* **ть
если бы челоеку нужен был бы такой ответ то он послал бы свой вопрос в изрук в руки бесплатным купоном и ждал бы такого же гениального ответа от такого же гения
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63
так возьми и напиши несколько... вот честно вот так напрягают такие челы... просто ужас... особенно когда по долгу сидишь за компом и попадаются такого рода ответы.. нечего сказать так промолчи... гений тво* **ть
если бы челоеку нужен был бы такой ответ то он послал бы свой вопрос в изрук в руки бесплатным купоном и ждал бы такого же гениального ответа от такого же гения
Будь сдержанным. Первое сообщение на форуме и уже критикуешь.
Чтобы не было вопроса перечитал бы 25 страниц топика этого.
Ни кто ни кому ни чего не должен, каждый помогает по мере свободного времени.
Если дал такой ответ, значит дал понять, что есть еще способы и постараетесь найти их самостоятельно. К примеру использовать сторонние apk для показа инфы по приложению.
 
  • Спасибо
Реакции: PussyM

gameboy123

Client
Регистрация
09.12.2017
Сообщения
58
Благодарностей
9
Баллы
8
После того как листаем вниз и пытаемся кликнуть выходит такая ошибка
"Выполнение действия CSharp OwnCode:.An unknown server-side error occurred while processing the command. Original error: Failed to Dump Window Hierarchy"

Как я понимаю там наверное не подгрузились элементы. Но в телефоне все подгрузилось. Как сделать чтобы программа начала видеть новые подгруженные элементы
 
Последнее редактирование:

Monitor

Client
Регистрация
27.12.2016
Сообщения
61
Благодарностей
37
Баллы
18
После того как листаем вниз и пытаемся кликнуть выходит такая ошибка
"Выполнение действия CSharp OwnCode:.An unknown server-side error occurred while processing the command. Original error: Failed to Dump Window Hierarchy"

Как я понимаю там наверное не подгрузились элементы. Но в телефоне все подгрузилось. Как сделать чтобы программа начала видеть новые подгруженные элементы
Можно так:
1. Сделал свайп вниз.
2. Проверил наличие нужного элемента.
3. Если отсутствует, то опять свайп.
C#:
for (int k = 0; k < 7; k++) {
    driver.Swipe(0.5, 0.6, 0.5, 0.3, 500);
    System.Threading.Thread.Sleep(1000);
    if (driver.FindElementsByXPath("//android.widget.TextView[contains(@resource-id, 'my_text')]").Count>0) {
        project.SendInfoToLog("Элемент найден");
        break;
    }
}
 
  • Спасибо
Реакции: uRusure и gameboy123
D

Dronhik

Guest
В процессе работы бота естественно появляются ошиьки: не отвечают сервера, простоттупит приложение и не грузит, ограничение со стороны сервера и тд

Эти ошибки вылезают в пуш уведомлениях, бувально на секунд 10.

Можно ли как-то отловить эти ошибки? Т.е. получить текст ошибки, для последующих действий в шаблоне

Если да, то как

А то даже не успеваешь ее исследовать спомощью разметчика андройд

Заранее спасибо)
 

gameboy123

Client
Регистрация
09.12.2017
Сообщения
58
Благодарностей
9
Баллы
8
Можно так:
1. Сделал свайп вниз.
2. Проверил наличие нужного элемента.
3. Если отсутствует, то опять свайп.
C#:
for (int k = 0; k < 7; k++) {
    driver.Swipe(0.5, 0.6, 0.5, 0.3, 500);
    System.Threading.Thread.Sleep(1000);
    if (driver.FindElementsByXPath("//android.widget.TextView[contains(@resource-id, 'my_text')]").Count>0) {
        project.SendInfoToLog("Элемент найден");
        break;
    }
}
Спасибо за ответ, но ошибка осталась. Проверил ошибка выходит на андроидах версии меньше 5.0.0 . Все что больше все работает.
Может аппиум другую версию попробовать нужно хз.
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63
Спасибо за ответ, но ошибка осталась. Проверил ошибка выходит на андроидах версии меньше 5.0.0 . Все что больше все работает.
Может аппиум другую версию попробовать нужно хз.
Рекомендую использовать android 5 и выше, поскольку с этой версии идет работа с uiautomator2
 

anarbus

Client
Регистрация
16.07.2019
Сообщения
549
Благодарностей
18
Баллы
18
Как отправлять adb команды используя Visual Studio?
Пробовал как писали здесь при помощи следующего кода:


C#:
using System.Diagnostics;

            ProcessStartInfo startInfo1 = new ProcessStartInfo();
            startInfo1.FileName = @"adb.exe";
            startInfo1.Arguments = @"shell input keyevent 3";//параметры выполнения adb команды
            startInfo1.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
            Process.Start(startInfo1).WaitForExit();//запускаем процесс и дожидаемся выполнения
Не помогло... Пишет такую ошибку: System.ComponentModel.Win32Exception: Не удается найти указанный файл.
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
556
Благодарностей
457
Баллы
63
Как отправлять adb команды используя Visual Studio?
Пробовал как писали здесь при помощи следующего кода:


C#:
using System.Diagnostics;

            ProcessStartInfo startInfo1 = new ProcessStartInfo();
            startInfo1.FileName = @"adb.exe";
            startInfo1.Arguments = @"shell input keyevent 3";//параметры выполнения adb команды
            startInfo1.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
            Process.Start(startInfo1).WaitForExit();//запускаем процесс и дожидаемся выполнения
Не помогло... Пишет такую ошибку: System.ComponentModel.Win32Exception: Не удается найти указанный файл.
Не указан полный путь к файлу adb.exe либо путь не добавлен в переменные окружения.
 
  • Спасибо
Реакции: anarbus

irving zisman

Client
Регистрация
18.05.2017
Сообщения
226
Благодарностей
28
Баллы
28
Всю голову сломал уже, как стереть поле вебсайт? по index не ищет, а другие элементы пустые

1571384093635.png
 

AleXPrischepA

Client
Регистрация
06.05.2015
Сообщения
209
Благодарностей
97
Баллы
28
Камрады... Кто в теме... Не могли бы вы обновить статью!? Ибо статья (первый пост) 2х летней давности... У меня что то не получается даже стартануть по ней... Может кто помочь!? Готов отблагодарить материально (в разумных пределах).
 

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