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

Добрые люди помогите разобраться с причиной по которой и appium и uiautomatorviewer.bat не видит структуру приложения, в итоге фактически весь экран это блок EditText и не один блок внутри не отображается соответсвенно единственный вариант работать по координатам что конкретно в моем случае не возможно так как есть динамические элементы которые влияют на логику поведения.

Так же буду благодарен если кто-то обьяснит как пользоваться adb logs для записи действий и их повторений через коммандную строку. Заранее спасибо
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    1,1 MB · Просмотры: 394
Бывают такие приложения :-)
я думаю если бывают такие приложения значит должны быть и варианты их разбора, для анализа уже пробую "прикрутить" анализ части принт скрина для идентификации наличия того или иного блока, но это уже крайние костыли. Хотелось бы найти знающего эксперта, который помог бы решить задачу ровными или полу-ровными методами.
 
Ты про какой именно порт? Я пока не пойму какой для чего (не считая порта для апиума), поэтому поставил везде разные

Код:
Развернуть Свернуть Копировать
"C:/Users/server/Desktop/Mobile/data/node 11.10.0/node.exe" "C:/Program Files (x86)/Appium/resources/app/node_modules/appium/build/lib/main.js" --address 127.0.0.1 --chromedriver-port 9516 --bootstrap-port 4725 --selendroid-port 8082 --no-reset --local-timezone -U HA0QGWZT -p 4724
"C:/Users/server/Desktop/Mobile/data/node 11.10.0/node.exe" "C:/Program Files (x86)/Appium/resources/app/node_modules/appium/build/lib/main.js" --address 127.0.0.1 --chromedriver-port 6006 --bootstrap-port 2296 --selendroid-port 8082 --no-reset --local-timezone -U 420023039aab3400  -p 4723

Прошу вашей помощи по appium. Работаю с реальными андройд устройствами. можно ли запустить новую версию appium c параметрами. Мне важен параметр "-U". На старой версии node.exe шаблон работает криво.
 
завершай полностью процесс, у себя такой проблемы не наблюдаю
и вопрос а зачем юзать нод с аппиумом 1,12, апп самодостаточен
подскажи пожалуйста, как запускать appium последних версий с настройками при помощи батника, если это возможно.
 
я думаю если бывают такие приложения значит должны быть и варианты их разбора, для анализа уже пробую "прикрутить" анализ части принт скрина для идентификации наличия того или иного блока, но это уже крайние костыли. Хотелось бы найти знающего эксперта, который помог бы решить задачу ровными или полу-ровными методами.
Для автомотизации игр лучше подходить airtest
 
Кто подскажет, как нажимать нужную кнопку, если там несколько одинаковых? Мне нужна вроде бы 3 по счету, а там нажимается первая... Класс и прочее у всех одинаковый
 
Кто подскажет, как нажимать нужную кнопку, если там несколько одинаковых? Мне нужна вроде бы 3 по счету, а там нажимается первая... Класс и прочее у всех одинаковый
Собрать коллекцию, кликнуть по нужному элементу...
Посмотри уроки https://zennolab.com/wiki/ru:zennoposter_start
 
Собрать коллекцию, кликнуть по нужному элементу...
Посмотри уроки https://zennolab.com/wiki/ru:zennoposter_start
Это ведь обучение по стандартному функционалу и клики в браузере зенки, а я говорю про кнопки в мобильном приложении которые имеют одинаковые классы
 
какая разница, принципы работы и логика везде одинаковая.
Ты видимо наугад ответил, не разбираясь в мобильных приложениях. Ерунду сказал в общем говоря
В браузере у каждой кнопки свой класс, а в мобильном приложении классы идентичны, там другие методы, их я и спрашиваю, в браузере (инструкция что ты кинул) просто выбор элемента, в мобильном приложении мне вручную надо прописать каким методом кликать кнопку, и где же логика одинаковая? Ты просто сказал ерунду с видом гуру, если не согласен аргументируй решением этой проблемы
 
Добрые люди помогите разобраться с причиной по которой и appium и uiautomatorviewer.bat не видит структуру приложения, в итоге фактически весь экран это блок EditText и не один блок внутри не отображается соответсвенно единственный вариант работать по координатам что конкретно в моем случае не возможно так как есть динамические элементы которые влияют на логику поведения.

Так же буду благодарен если кто-то обьяснит как пользоваться adb logs для записи действий и их повторений через коммандную строку. Заранее спасибо
Меняй активити или можешь с начала запустить главный экран телефона, а потом запустить приложение, в 30% помогает
 
Вдруг кому-то понадобиться разгадывать капчу, не очень понравилась идея снимать скриншот всего экрана, а потом что-то вычислять. Порывшись в интернете (я пока не очень прокачен в с sharp и zennoposter) нашел подходящий способ и немного адаптировал под себя:
1. В общий код добавляйте метод для вашего класса:
C#:
Развернуть Свернуть Копировать
public  void TakeScreenshot(string filePath, string fileName, IWebDriver driver, IWebElement element)
{
            try
            {
                Byte[] byteArray = ((ITakesScreenshot)driver).GetScreenshot().AsByteArray;
                System.Drawing.Bitmap screenshot = new System.Drawing.Bitmap(new System.IO.MemoryStream(byteArray));
                System.Drawing.Rectangle croppedImage = new System.Drawing.Rectangle(element.Location.X, element.Location.Y, element.Size.Width, element.Size.Height);
                screenshot = screenshot.Clone(croppedImage, screenshot.PixelFormat);
                screenshot.Save(String.Format(filePath + fileName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg));
            }
            catch (Exception e)
            {
                project.SendWarningToLog(" Ошибка - send " + e.StackTrace + ' ' + e.Message);
            }
}
2. В коде вызываете через объявления класса и прописываете переменные, которые есть для метода:
C#:
Развернуть Свернуть Копировать
ВашКласс.TakeScreenshot(file_path,  file_name, driver, driver.FindElementByXPath(@"//android.widget.Image[@content-desc=""Визуальная проверка""]"));

В итоге получаете только изображение капчи:
64238
 
Здравствуйте! Не могу настроить на windows server 2016
Ошибка в appium:

[Appium] Welcome to Appium v1.18.2
[Appium] Non-default server args:
[Appium] address: 127.0.0.1
[Appium] callbackPort: 4723
[Appium] bootstrapPort: 4823
[Appium] chromedriverPort: 9513
[Appium] Deprecated server args:
[Appium] --chromedriver-port => --default-capabilities '{"chromedriverPort":9513}'
[Appium] Default capabilities, which will be added to each request unless overridden by desired capabilities:
[Appium] chromedriverPort: 9513
[Appium] Appium REST http interface listener started on 127.0.0.1:4723
[HTTP] --> POST /wd/hub/session
[HTTP] {"desiredCapabilities":{"deviceName":"21503","platformVersion":"5.1.1","platformName":"Android","unicodeKeyboard":"true","newCommandTimeout":"3000","systemPort":"8203","bootstrapPort":"21503","noReset":"true","udid":"127.0.0.1:21503"}}
[debug] [MJSONWP] Calling AppiumDriver.createSession() with args: [{"deviceName":"21503","platformVersion":"5.1.1","platformName":"Android","unicodeKeyboard":"true","newCommandTimeout":"3000","systemPort":"8203","bootstrapPort":"21503","noReset":"true","udid":"127.0.0.1:21503"},null,null]
[debug] [BaseDriver] Event 'newSessionRequested' logged at 1602018436417 (00:07:16 GMT+0300 (GMT+03:00))
[Appium]
[Appium] ======================================================================
[Appium] DEPRECATION WARNING:
[Appium]
[Appium] The 'automationName' capability was not provided in the desired
[Appium] capabilities for this Android session
[Appium]
[Appium] Setting 'automationName=UiAutomator2' by default and using the
[Appium] UiAutomator2 Driver
[Appium]
[Appium] The next major version of Appium (2.x) will **require** the
[Appium] 'automationName' capability to be set for all sessions on all
[Appium] platforms
[Appium]
[Appium] In previous versions (Appium <= 1.13.x), the default was
[Appium] 'automationName=UiAutomator1'
[Appium]
[Appium] If you wish to use that automation instead of UiAutomator2, please
[Appium] add 'automationName=UiAutomator1' to your desired capabilities
[Appium]
[Appium] For more information about drivers, please visit
[Appium] http://appium.io/docs/en/about-appium/intro/ and explore the
[Appium] 'Drivers' menu
[Appium]
[Appium] ======================================================================
[Appium]
[Appium] Appium v1.18.2 creating new AndroidUiautomator2Driver (v1.56.1) session
[debug] [BaseDriver] Creating session with MJSONWP desired capabilities: {
[debug] [BaseDriver] "chromedriverPort": 9513,
[debug] [BaseDriver] "deviceName": "21503",
[debug] [BaseDriver] "platformVersion": "5.1.1",
[debug] [BaseDriver] "platformName": "Android",
[debug] [BaseDriver] "unicodeKeyboard": "true",
[debug] [BaseDriver] "newCommandTimeout": "3000",
[debug] [BaseDriver] "systemPort": "8203",
[debug] [BaseDriver] "bootstrapPort": "21503",
[debug] [BaseDriver] "noReset": "true",
[debug] [BaseDriver] "udid": "127.0.0.1:21503"
[debug] [BaseDriver] }
[BaseDriver] Capability 'noReset' changed from string to boolean. This may cause unexpected behavior
[BaseDriver] Capability 'unicodeKeyboard' changed from string to boolean. This may cause unexpected behavior
[BaseDriver] Capability 'newCommandTimeout' changed from string ('3000') to integer (3000). This may cause unexpected behavior
[BaseDriver] Capability 'systemPort' changed from string ('8203') to integer (8203). This may cause unexpected behavior
[BaseDriver] The following capabilities were provided, but are not recognized by Appium:
[BaseDriver] bootstrapPort
[BaseDriver] Session created with session id: d1ff6496-11c9-4804-83dd-3713237729ec
[UiAutomator2] Neither 'app' nor 'appPackage' was set. Starting UiAutomator2 without the target application
[ADB] Found 1 'build-tools' folders under 'C:\SDK' (newest first):
[ADB] C:/SDK/build-tools/29.0.3
[ADB] Using 'adb.exe' from 'C:\SDK\platform-tools\adb.exe'
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 start-server'
[AndroidDriver] Retrieving device list
[debug] [ADB] Trying to find a connected android device
[debug] [ADB] Getting connected devices
[debug] [ADB] Connected devices: [{"udid":"127.0.0.1:21503","state":"device"}]
[AndroidDriver] Using device: 127.0.0.1:21503
[ADB] Using 'adb.exe' from 'C:\SDK\platform-tools\adb.exe'
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 start-server'
[debug] [ADB] Setting device id to 127.0.0.1:21503
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell getprop ro.build.version.sdk'
[debug] [ADB] Current device property 'ro.build.version.sdk': 22
[debug] [ADB] Device API level: 22
[AndroidDriver] No app sent in, not parsing package/activity
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 wait-for-device'
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell echo ping'
[debug] [AndroidDriver] Pushing settings apk to device...
[debug] [ADB] Getting install status for io.appium.settings
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell dumpsys package io.appium.settings'
[debug] [ADB] 'io.appium.settings' is installed
[debug] [ADB] Getting package info for 'io.appium.settings'
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell dumpsys package io.appium.settings'
[debug] [ADB] The version name of the installed 'io.appium.settings' is greater or equal to the application version name ('3.2.0' >= '3.2.0')
[debug] [ADB] There is no need to install/upgrade 'C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\io.appium.settings\apks\settings_apk-debug.apk'
[debug] [ADB] Getting IDs of all 'io.appium.settings' processes
[debug] [ADB] Using ps-based PID detection
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell ps'
[debug] [AndroidDriver] io.appium.settings is already running. There is no need to reset its permissions.
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell settings put secure mock_location 1'
[debug] [Logcat] Starting logs capture with command: C:\\SDK\\platform-tools\\adb.exe -P 5037 -s 127.0.0.1\:21503 logcat -v threadtime
[debug] [AndroidDriver] Enabling Unicode keyboard support
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell settings get secure default_input_method'
[debug] [AndroidDriver] Unsetting previous IME io.appium.settings/.UnicodeIME
[debug] [AndroidDriver] Setting IME to 'io.appium.settings/.UnicodeIME'
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell ime enable io.appium.settings/.UnicodeIME'
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell ime set io.appium.settings/.UnicodeIME'
[debug] [UiAutomator2] Forwarding UiAutomator2 Server port 6790 to 8203
[debug] [ADB] Forwarding system: 8203 to device: 6790
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 forward tcp\:8203 tcp\:6790'
[debug] [ADB] Getting install status for io.appium.uiautomator2.server
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 shell dumpsys package io.appium.uiautomator2.server'
[debug] [ADB] 'io.appium.uiautomator2.server' is not installed
[debug] [ADB] App 'C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.12.2.apk' is not installed
[debug] [UiAutomator2] io.appium.uiautomator2.server installation state: notInstalled
[debug] [ADB] Checking app cert for C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.12.2.apk
[ADB] Using 'apksigner.jar' from 'C:\SDK\build-tools\29.0.3\lib\apksigner.jar'
[ADB] Cannot use apksigner tool for signature verification. Original error: The JAVA_HOME environment variable must be set for Android Tools to work properly
[debug] [ADB] Defaulting to verify.jar
[debug] [ADB] 'C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.12.2.apk' is not signed with the default certificate
[debug] [ADB] The JAVA_HOME environment variable must be set for Android Tools to work properly
[ADB] Using 'zipalign.exe' from 'C:\SDK\build-tools\29.0.3\zipalign.exe'
[debug] [ADB] C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.12.2.apk' is already zip-aligned. Doing nothing
[debug] [ADB] Signing 'C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-v4.12.2.apk' with default cert
[ADB] Cannot use apksigner tool for signing. Defaulting to sign.jar. Original error: The JAVA_HOME environment variable must be set for Android Tools to work properly
[debug] [UiAutomator2] Deleting UiAutomator2 session
[debug] [UiAutomator2] Deleting UiAutomator2 server session
[debug] [WD Proxy] Matched '/' to command name 'deleteSession'
[UiAutomator2] Did not get confirmation UiAutomator2 deleteSession worked; Error was: UnknownError: An unknown server-side error occurred while processing the command. Original error: Trying to proxy a session command without session id
[debug] [Logcat] Stopping logcat capture
[debug] [ADB] Removing forwarded port socket connection: 8203
[debug] [ADB] Running 'C:\SDK\platform-tools\adb.exe -P 5037 -s 127.0.0.1\:21503 forward --remove tcp\:8203'
[debug] [BaseDriver] Event 'newSessionStarted' logged at 1602018439888 (00:07:19 GMT+0300 (GMT+03:00))
[debug] [MJSONWP] Encountered internal error running command: Error: The JAVA_HOME environment variable must be set for Android Tools to work properly
[debug] [MJSONWP] at getJavaHome (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-adb\lib\helpers.js:156:11)
[debug] [MJSONWP] at getJavaHome (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\lodash\lodash.js:10578:27)
[debug] [MJSONWP] at getJavaForOs (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-adb\lib\helpers.js:169:29)
[debug] [MJSONWP] at memoized (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\lodash\lodash.js:10578:27)
[debug] [MJSONWP] at ADB.executeApksigner (C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\appium-adb\lib\tools\apk-signing.js:31:11)
[debug] [MJSONWP] Destroying socket connection
[HTTP] <-- POST /wd/hub/session 500 3608 ms - 218
[HTTP]
 
adb я так понимаю не запускается?

adb server version (31) doesn't match this client (41); killing...
* daemon started successfully
connected to 127.0.0.1:21503
 
Помогите пжл. За 4 дня все осилил, настроил, на пути было много трудностей.

Нужно с xpath получить атрибут text и соxранить в переменную? Перерыл много тем не могу найти и тут все страницы прочел
 
project.Variables["Переменная"].Value = driver.FindElementByXPath("//android.widget.FrameLayout[2]/android.widget.TextView").GetAttribute("text");
 
Подскажите где скачать обновленные dll актуальной версии Appium.WebDriver? Гугл с Яшкой не помогли
 
Многое изменилось с момента первого поста. Настроил себе всё с нуля, поставил везде свежие версии необходимого софта. Кому нужно, прикладываю актуальные рабочие dll.
Так же изменился класс настроек, теперь начальные настройки выглядят так:
C#:
Развернуть Свернуть Копировать
AppiumOptions options = new AppiumOptions();
options.PlatformName = "Android";
options.AddAdditionalCapability("deviceName", "myDevice");
options.AddAdditionalCapability("platformVersion", "7.1.1");
options.AddAdditionalCapability("automationName", "UiAutomator2");
options.AddAdditionalCapability("noReset", "True");
options.AddAdditionalCapability("unicodeKeyboard", "true");
options.AddAdditionalCapability("appPackage", "com.instagram.android");
options.AddAdditionalCapability("appActivity", ".activity.MainTabActivity");
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), options);
В батнике для запуска appium'a следующая команда:
Код:
Развернуть Свернуть Копировать
"C:/Program Files/nodejs/node.exe" "C:/Users/User/AppData/Local/Programs/Appium/resources/app/node_modules/appium/build/lib/main.js" --address 127.0.0.1 --chromedriver-port 9516 --bootstrap-port 4725 --no-reset --local-timezone
 

Вложения

Последнее редактирование:
Многое изменилось с момента первого поста. Настроил себе всё с нуля, поставил везде свежие версии необходимого софта. Кому нужно, прикладываю актуальные рабочие dll.
Так же изменился класс настроек, теперь начальные настройки выглядят так:
C#:
Развернуть Свернуть Копировать
AppiumOptions options = new AppiumOptions();
options.PlatformName = "Android";
options.AddAdditionalCapability("deviceName", "myDevice");
options.AddAdditionalCapability("platformVersion", "7.1.1");
options.AddAdditionalCapability("automationName", "UiAutomator2");
options.AddAdditionalCapability("noReset", "True");
options.AddAdditionalCapability("unicodeKeyboard", "true");
options.AddAdditionalCapability("appPackage", "com.instagram.android");
options.AddAdditionalCapability("appActivity", ".activity.MainTabActivity");
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), options);
В батнике для запуска appium'a следующая команда:
Код:
Развернуть Свернуть Копировать
"C:/Program Files/nodejs/node.exe" "C:/Users/User/AppData/Local/Programs/Appium/resources/app/node_modules/appium/build/lib/main.js" --address 127.0.0.1 --chromedriver-port 9516 --bootstrap-port 4725 --no-reset --local-timezone

У меня все отлично запускается. Спасибо!

Кто-нибудь запускал Хром с аргументами? Поделитесь с решением, как запустить Хром в режиме Инкогнито

пример:
C#:
Развернуть Свернуть Копировать
ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");
 
У меня все отлично запускается. Спасибо!

Кто-нибудь запускал Хром с аргументами? Поделитесь с решением, как запустить Хром в режиме Инкогнито

пример:
C#:
Развернуть Свернуть Копировать
ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");

А какая версия аппиума?

Хром с аргументами так тоже не работает?
1.png
 

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