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

Gnom41k

Client
Регистрация
03.02.2016
Сообщения
11
Благодарностей
2
Баллы
3
Добрые люди помогите разобраться с причиной по которой и appium и uiautomatorviewer.bat не видит структуру приложения, в итоге фактически весь экран это блок EditText и не один блок внутри не отображается соответсвенно единственный вариант работать по координатам что конкретно в моем случае не возможно так как есть динамические элементы которые влияют на логику поведения.

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

Вложения

radv

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

Gnom41k

Client
Регистрация
03.02.2016
Сообщения
11
Благодарностей
2
Баллы
3
Бывают такие приложения :-)
я думаю если бывают такие приложения значит должны быть и варианты их разбора, для анализа уже пробую "прикрутить" анализ части принт скрина для идентификации наличия того или иного блока, но это уже крайние костыли. Хотелось бы найти знающего эксперта, который помог бы решить задачу ровными или полу-ровными методами.
 

Zemich

Client
Регистрация
01.03.2020
Сообщения
37
Благодарностей
6
Баллы
8
Ты про какой именно порт? Я пока не пойму какой для чего (не считая порта для апиума), поэтому поставил везде разные

Код:
"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 шаблон работает криво.
 

Zemich

Client
Регистрация
01.03.2020
Сообщения
37
Благодарностей
6
Баллы
8
завершай полностью процесс, у себя такой проблемы не наблюдаю
и вопрос а зачем юзать нод с аппиумом 1,12, апп самодостаточен
подскажи пожалуйста, как запускать appium последних версий с настройками при помощи батника, если это возможно.
 

dark_pheonix

Client
Регистрация
14.07.2020
Сообщения
12
Благодарностей
1
Баллы
3
я думаю если бывают такие приложения значит должны быть и варианты их разбора, для анализа уже пробую "прикрутить" анализ части принт скрина для идентификации наличия того или иного блока, но это уже крайние костыли. Хотелось бы найти знающего эксперта, который помог бы решить задачу ровными или полу-ровными методами.
Для автомотизации игр лучше подходить airtest
 

Occul

Новичок
Регистрация
16.07.2020
Сообщения
13
Благодарностей
4
Баллы
3
Кто подскажет, как нажимать нужную кнопку, если там несколько одинаковых? Мне нужна вроде бы 3 по счету, а там нажимается первая... Класс и прочее у всех одинаковый
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 032
Благодарностей
587
Баллы
113
Кто подскажет, как нажимать нужную кнопку, если там несколько одинаковых? Мне нужна вроде бы 3 по счету, а там нажимается первая... Класс и прочее у всех одинаковый
Собрать коллекцию, кликнуть по нужному элементу...
Посмотри уроки https://zennolab.com/wiki/ru:zennoposter_start
 

Occul

Новичок
Регистрация
16.07.2020
Сообщения
13
Благодарностей
4
Баллы
3
Собрать коллекцию, кликнуть по нужному элементу...
Посмотри уроки https://zennolab.com/wiki/ru:zennoposter_start
Это ведь обучение по стандартному функционалу и клики в браузере зенки, а я говорю про кнопки в мобильном приложении которые имеют одинаковые классы
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 032
Благодарностей
587
Баллы
113

Occul

Новичок
Регистрация
16.07.2020
Сообщения
13
Благодарностей
4
Баллы
3
какая разница, принципы работы и логика везде одинаковая.
Ты видимо наугад ответил, не разбираясь в мобильных приложениях. Ерунду сказал в общем говоря
В браузере у каждой кнопки свой класс, а в мобильном приложении классы идентичны, там другие методы, их я и спрашиваю, в браузере (инструкция что ты кинул) просто выбор элемента, в мобильном приложении мне вручную надо прописать каким методом кликать кнопку, и где же логика одинаковая? Ты просто сказал ерунду с видом гуру, если не согласен аргументируй решением этой проблемы
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 032
Благодарностей
587
Баллы
113

dark_pheonix

Client
Регистрация
14.07.2020
Сообщения
12
Благодарностей
1
Баллы
3
Добрые люди помогите разобраться с причиной по которой и appium и uiautomatorviewer.bat не видит структуру приложения, в итоге фактически весь экран это блок EditText и не один блок внутри не отображается соответсвенно единственный вариант работать по координатам что конкретно в моем случае не возможно так как есть динамические элементы которые влияют на логику поведения.

Так же буду благодарен если кто-то обьяснит как пользоваться adb logs для записи действий и их повторений через коммандную строку. Заранее спасибо
Меняй активити или можешь с начала запустить главный экран телефона, а потом запустить приложение, в 30% помогает
 

evgosyan

Client
Регистрация
06.08.2020
Сообщения
23
Благодарностей
18
Баллы
3
Вдруг кому-то понадобиться разгадывать капчу, не очень понравилась идея снимать скриншот всего экрана, а потом что-то вычислять. Порывшись в интернете (я пока не очень прокачен в с 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
 

wmz1986

Client
Регистрация
30.05.2016
Сообщения
26
Благодарностей
7
Баллы
3
Здравствуйте! Не могу настроить на 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]
 

wmz1986

Client
Регистрация
30.05.2016
Сообщения
26
Благодарностей
7
Баллы
3
adb я так понимаю не запускается?

adb server version (31) doesn't match this client (41); killing...
* daemon started successfully
connected to 127.0.0.1:21503
 

wmz1986

Client
Регистрация
30.05.2016
Сообщения
26
Благодарностей
7
Баллы
3
Помогите пжл. За 4 дня все осилил, настроил, на пути было много трудностей.

Нужно с xpath получить атрибут text и соxранить в переменную? Перерыл много тем не могу найти и тут все страницы прочел
 

dark_pheonix

Client
Регистрация
14.07.2020
Сообщения
12
Благодарностей
1
Баллы
3
project.Variables["Переменная"].Value = driver.FindElementByXPath("//android.widget.FrameLayout[2]/android.widget.TextView").GetAttribute("text");
 

Assassin

Client
Регистрация
17.11.2011
Сообщения
24
Благодарностей
3
Баллы
3
Подскажите где скачать обновленные dll актуальной версии Appium.WebDriver? Гугл с Яшкой не помогли
 

Phoenix78

Client
Регистрация
06.11.2018
Сообщения
6 065
Благодарностей
2 793
Баллы
113

Zedx

Client
Регистрация
12.06.2018
Сообщения
610
Благодарностей
260
Баллы
63
Многое изменилось с момента первого поста. Настроил себе всё с нуля, поставил везде свежие версии необходимого софта. Кому нужно, прикладываю актуальные рабочие 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
 

Вложения

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

Zedx

Client
Регистрация
12.06.2018
Сообщения
610
Благодарностей
260
Баллы
63
...
 
Последнее редактирование:

Assassin

Client
Регистрация
17.11.2011
Сообщения
24
Благодарностей
3
Баллы
3
Многое изменилось с момента первого поста. Настроил себе всё с нуля, поставил везде свежие версии необходимого софта. Кому нужно, прикладываю актуальные рабочие 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");
 

Zedx

Client
Регистрация
12.06.2018
Сообщения
610
Благодарностей
260
Баллы
63
У меня все отлично запускается. Спасибо!

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

пример:
C#:
ChromeOptions options = new ChromeOptions();
options.addArguments("--incognito");
А какая версия аппиума?

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

Assassin

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

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