Автоматизированное тестирование приложений | Принцип работы Appium и конфигурация желаемых возможностей
Автоматизированное тестирование приложений | Принцип работы Appium и конфигурация желаемых возможностей

Принцип работы Appium и конфигурация желаемых возможностей

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Как работает Аппиум

Вставьте сюда описание изображения
Вставьте сюда описание изображения

запрос сценария——>4723портappium server——>проанализировать параметры, чтобыPCконец4724порт——>Отправить на устройство4724порт——>через устройство4724портвыданоbootstrap.jar——>Bootstrap.jarОтправьте команду наuiautomator

  • JsonWireProtocol: это протокол, который соответствует стилю REST и передается с использованием метода JSON. Он представляет собой серию пар ключ-значение и соответствует стилю дизайна W3C WebDriver Spec; протокол связи Json в appium наследуется от протокола связи веб-драйвера Selenium. — это модифицированные расширения, которые позволяют проводному протоколу Json управлять поведением различных мобильных устройств.
  • bootstrap: bootstrap существует в форме jar-пакета в appium. Его функция — служить службой сокетов, преобразуя запросы, отправленные сервером Appium, в команды uiautomator для обработки uiautomator. Прежде чем сеанс будет успешно создан, appium поместил bootstrap.jar в мобильный телефон и включил службу сокетов на основе appiumbootstrap на устройстве. Он связывает номер порта 4724 для связи между локальным компьютером и boostrap для связи с устройствами Android. По умолчанию он прослушивает порт 4724, ожидая подключения клиента.
  • Uiautomator: UiAutomator предоставляется Google для Android. Автоматизированное. тестированиеодин изJavaБиблиотека,На основе служб доступности. Очень мощный,Сторонние приложения можно протестировать. Его первоначальная версия выпущена для Android 4.3 (APIlevel18) и более поздних версий системы Android.
  • Selendroid: Selendroid похож на UiAutomator.,Это также программное обеспечение для Android, предоставляемое Google.,Гибридное тестирование пользовательского интерфейса для собственных приложений и мобильного Интернета для систем Android. В основном он используется в версиях системы Android Android 4.2 (APIlevel17) и ниже.
  • Инструменты: Инструменты — очень гибкий и мощный инструмент.,Это инструмент тестирования для анализа производительности, динамического отслеживания и анализа кодов OSX и iOS.,appiumios инкапсулирует структуру Apple Instruments,В основном используйте UIAutomation в инструментах (фреймворк «Автоматизированное тестирование» от Apple).,Затем внедрите bootstrap.js в устройство для мониторинга линии.

Желаемое размещение возможностей

Желаемые возможности содержат некоторую информацию о конфигурации. По сути, это объект в форме ключ-значение. Его можно понимать как карту в Java, словарь в Python, хеш в Ruby и объект JSON в JS. Фактически, желаемые возможности при передаче представляют собой объекты json.

Самая важная роль DesiredCapabilities — сообщить серверу Appium контекст этого теста.

например:

  • Этот тест запускает браузер или мобильное устройство?
  • Стоит ли запускать andorid или ios?
  • Какой пакет у приложения при запуске Android?
  • Какова активность приложения при запуске Android?

Необходимо ответить на эти вопросы о желаемых возможностях сервера Appium, иначе сервер Appium не сможет завершить запуск мобильного приложения или браузера.

Введение в общие пары «ключ-значение» желаемых возможностей:

AutomationName: какой механизм автоматизации использовать. appium (по умолчанию) или Selendroid.

PlatformName: название платформы, iOS, Android, FirefoxOS.

PlatformVersion: номер версии системы мобильного устройства, 7.1, 4.4.

deviceName: имя устройства, Android: можно заполнить по желанию IOS: Instruments -s devices;

udid: уникальный идентификатор подключенного физического устройства можно получить с помощью устройств adb.

app:локальный абсолютный путьилиудаленныйhttpURLуказал наодин из Инсталляционный пакет(.ipa,.apk,или файл .zip). Appium установит его на соответствующее устройство. Если указаны параметры appPackage и appActivity, Android не требует этого параметра. Этот параметр также несовместим с имя_браузера. (Обычно используется с атрибутом noSign)

имя_браузера: протестированный веб-браузер H5, игнорируется, если это тестовое приложение.

newCommandTimeout: используется для времени (в секундах), в течение которого Appium ожидает отправки клиентом новой команды перед выходом или завершением сеанса.

noReset: не сбрасывать состояние приложения перед текущим сеансом, значение по умолчанию — false.

FullReset: (iOS) Удалить все папки симулятора. (Android) Чтобы очистить данные в приложении, удалите приложение, чтобы добиться эффекта сброса приложения. На Android приложение также будет удалено после завершения сеанса. Значение по умолчанию — ложь

Введение в желаемые возможности пар ключ-значение, специфичных для Android:

appPackage: имя пакета работающего приложения Android, если оно тестирует веб-страницу H5, этот атрибут игнорируется;

appActivity: имя Activity относится к активности Android, которая будет запущена из вашего пакета. Обычно вам нужно добавить «.» впереди, если тестируется веб-страница H5, игнорируйте этот атрибут;

unicodeKeyboard: использовать метод ввода Unicode. Значение по умолчанию — ложь

resetKeyboard: после установки теста Unicode с ключевым словом unicodeKeyboard сбросьте метод ввода в исходное состояние. Если используется отдельно, он будет проигнорирован. Значение по умолчанию — ложь

noSign: пропустить этапы проверки и отладки подписи приложения. Работает только с UiAutomator, а не с selendroid. Значение по умолчанию — false (обычно используется с атрибутом приложения).

Примеры использования DesiredCapabilities:

  1. Словарное определение Желаемого размещения
Язык кода:python
кодКоличество запусков:0
копировать
from appium import webdriver

# 1、Определите желаемое Словарь конфигурации возможностей
des = {
    'automationName':'appium',
    'platformName':'Android',   # Название платформы iOS, Android, FirefoxOS
    'platformVersion':'9.1.0',  # Введите номер версии системы виртуальной/реальной машины Android.
    'deviceName':'huawei',      # Введите имя устройства виртуальной/реальной машины Android.
    'appPackage':'com.sky.jisuanji',    # Введите название пакета тестируемого приложения.
    'appActivity':'.JisuanjizixieActivity',    # Заполните запись «Активность» тестируемого приложения.
    'udid':'HBSBB18821510293',    # Заполните через командную строку adb devices Просмотрено удид
    'noReset':True,               # ли Не сбрасывайте приложение
    'noSign':True,                # ли Нет подписи
    'unicodeKeyboard':True,       # ли поддерживает китайский ввод
    'resetKeyboard':True,         # ли Поддерживает сброс настроек клавиатуры
    'newCommandTimeout': 30  # Отключиться, если в течение 30 секунд не отправляется новая команда.
       }

# 2. Отправьте настроенный словарь на сервер Appium в качестве параметра запроса.
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)
  1. H5веб-страница Желаемое размещение возможностей:
Язык кода:python
кодКоличество запусков:0
копировать
from appium import webdriver

# 1、Определите желаемое Словарь конфигурации возможностей
des = {
    'automationName':'appium',
    'platformName':'Android',   # Название платформы iOS, Android, FirefoxOS
    'platformVersion':'9.1.0',  # Введите номер версии системы виртуальной/реальной машины Android.
    'deviceName':'huawei',      # Введите имя устройства виртуальной/реальной машины Android.
    'browserName': 'chrome',      # Имя устройства браузера
    'udid':'HBSBB18821510293',    # Заполните через командную строку adb devices Просмотрено удид
    'noReset':True,               # ли Не сбрасывайте приложение
    'noSign':True,                # ли Нет подписи
    'unicodeKeyboard':True,       # ли поддерживает китайский ввод
    'resetKeyboard':True,         # ли Поддерживает сброс настроек клавиатуры
    'newCommandTimeout': 30  # Отключиться, если в течение 30 секунд не отправляется новая команда.
       }

# 2. Отправьте настроенный словарь на сервер Appium в качестве параметра запроса.
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',des)
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose