Документация
ОС Аврора 5.1.5

Список поддерживаемых методов

Ниже приведён список методов, поддерживаемых qtium-драйвером, на примере использования Appium Python Client:

Базовые методы для работы с устройством и приложениями

activate_app(appId: str) -> WebDriver

Примечание. Для работы с каждым отдельным приложением необходимо создавать отдельный экземпляр WebDriver.

Открывает приложение, если оно не запущено или запущено в фоновом режиме.

Параметр appId не используется при вызове activate_app(), но его необходимо указывать для корректного выполнения.

Возвращает ссылку на текущий объект, позволяя последовательно вызывать методы этого объекта.

Пример:

driver.activate_app('ru.omp.filemanager')

close_app(None) -> WebDriver

Примечание. Для работы с каждым отдельным приложением необходимо создавать отдельный экземпляр WebDriver.

Останавливает запущенное на устройстве приложение, которое было указано при инициализации экземпляра объекта драйвера (appPackage). Если указанное приложение не активно, сервер возвращает ошибку 500, и генерируется исключение.

Возвращает ссылку на текущий объект, позволяя последовательно вызывать методы этого объекта.

Пример:

driver.close_app()

execute(command: str, arguments: None | Dict[str, Any]) -> Dict[str, str]

Позволяет отправить на выполнение команду, поддерживаемую Appium непосредственно в виде строки.

Возвращает JSON-ответ команды в виде объекта словаря.

Примеры:

res = driver.execute('launchApp')

или

driver.execute('queryAppState', {'appId':'ru.omp.filemanager'})
ответ: {'value': 'RUNNING_IN_FOREGROUND'}

или

driver.execute('getDeviceTimeGet')
ответ: {'value': 'Sun Dec 1 19:48:28 2024'}

или

driver.execute('isLocked')
ответ: {'value': False}

execute_async_script(script: str, args: List[str]) -> str

Позволяет асинхронно выполнить команду, специфичную для ОС Аврора из доступного набора расширений.

Пример:

driver.execute_async_script('app:swipe', 'left')

execute_script(script: str, args: List[str]) -> str

Позволяет синхронно выполнить команду, специфичную для ОС Аврора из доступного набора расширений.

Пример:

driver.execute_script('app:swipe', 'left')

get_device_time(format: str | None = None) -> str

Возвращает дату и время с устройства.

  • format — (необязательный) набор спецификаторов формата. По умолчанию используется формат 'YYYY-MM-DDTHH:mm:ssZ', который соответствует стандарту ISO-8601. Информация по спецификаторам формата доступна по ссылке.

Примеры:

dt = driver.get_device_time()

или

device_date = driver.get_device_time('YYYY-MM-DD')

или

device_time = driver.get_device_time('HH:mm:ss')

is_locked(None) -> True | False

Проверяет, заблокировано ли устройство.

Возвращает True, если заблокировано, False в противном случае.

Пример:

res = driver.is_locked()

launch_app(None) -> WebDriver

Примечание. Для работы с каждым отдельным приложением необходимо создавать отдельный экземпляр WebDriver.

Запускает на устройстве приложение, которое было указано при инициализации экземпляра объекта драйвера (appPackage).

Возвращает ссылку на текущий объект, позволяя последовательно вызывать методы этого объекта.

Пример:

driver.launch_app()

query_app_state(appName: str) -> str

Запрашивает состояние приложения.

Возвращает одно из следующих состояний приложения в виде строки:

  • RUNNING_IN_FOREGROUND;
  • RUNNING_IN_BACKGROUND;
  • NOT_RUNNING;
  • CLOSING (устаревший статус).

Пример:

state = driver.query_app_state('ru.omp.filemanager')

set_network_connection(connectionType: double)

Устанавливает тип сетевого соединения на устройстве.

  • 0 — нет;
  • 1 — авиарежим;
  • 2 — только wi-fi;
  • 4 — только мобильные данные;
  • 6 — все сети включены.

Примеры:

driver.set_network_connection(1)

или

driver.set_network_connection(6)

terminate_app(appId: str) -> str

Завершает приложение, если оно запущено. Если указанное приложение не активно, сервер возвращает ошибку 500, и генерируется исключение.

В случае успеха возвращает пустую строку.

Параметр appId не используется при вызове terminate_app(), но его необходимо указывать для корректного выполнения.

Пример:

driver.terminate_app('ru.omp.filemanager')

Методы для работы с UI-элементами

Для работы с UI-элементами на странице приложения сначала необходимо позиционировать их с помощью методов find_element или find_elements, а затем производить доступные действия с найденными объектами.

find_element или find_elements(locatorStrategy: str (By.ID), selector: str) -> WebElement/WebElements list

Данные методы используются для поиска UI-элементов на странице приложения, аналогично способам, используемым при работе с qainspector.
Для поиска элемента необходимо указать стратегию поиска (элемент класса By из selenium.webdriver.common: By.NAME, By.ID, By.CLASS_NAME, By.XPATH) и локатор в соответствующем формате. Разница между find_element и find_elements только в возвращаемом значении. Первый метод возвращает первый найденный элемент в виде объекта WebElement или генерирует исключение, если элемент не найден. Второй метод возвращает список всех подходящих под критерий поиска элементов в виде объектов WebElement или пустой список при отсутствии таковых.

Примеры:

from selenium.webdriver.common.by import By
driver.find_element(By.NAME, 'Устройство')

или

from selenium.webdriver.common.by import By
driver.find_element(By.ID, 'MoreButton')

или

from selenium.webdriver.common.by import By
driver.find_element(By.CLASS_NAME, 'MainPage')

или

from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, "//MiniComboBox[@value='Адрес' and @enabled='true']")

У элементов, найденных с помощью методов find_element или find_elements, можно получать доступные свойства или передавать их в качестве параметров другим методам, а также вызывать методы, такие как:

  • get_property(property_name: str);
  • location();
  • click().

Примеры:

top_element = driver.find_element(By.XPATH, "//PageStackIndicator")
top_boundary = top_element.location['y'] + top_element.get_property('height')

или

driver.find_elements(by=By.ID, value="MoreButton").click()

Более подробно об этих методах можно прочитать в документации Selenium.

Список команд для execute_script и execute_async_script, специфичных для ОС Аврора

app:clickContextMenuItem

Выполняет выбор элемента контекстного меню.

Примеры:

driver.execute_script('app:clickContextMenuItem', 'ContextMenu_0x12345678', 'some text label')

или

driver.execute_script('app:clickContextMenuItem', 'ContextMenu_0x12345678', index)

ContextMenu_0x12345678 — идентификатор элемента меню, который необходимо найти до использования этого метода (например, с помощью find_element или find_elements).

app:enterCode

Используется для ввода цифрового кода с элемента "Клавиатура". Для подтверждения действия используется #, для отмены действия — *.

Пример:

driver.execute_script('app:enterCode', '12345#')

app:goBack

Примечание. Не работает в приложениях со SplitView.

Выполняет действие навигации "Назад" на текущей странице.

Пример:

driver.execute_script('app:goBack')

app:goForward

Примечание. Не работает в приложениях со SplitView.

Выполняет действие навигации "Вперёд" на текущей странице.

Пример:

driver.execute_script('app:goForward')

app:peek

Выполняет действие peek (движение от одного края экрана к другому) в выбранном направлении.

Пример:

driver.execute_script('app:peek', 'left')

Допустимые направления:

  • left;
  • right;
  • up;
  • down.

app:pullDownTo

Выполняет вытягивание вниз ("PullDown") с вызовом PullDownMenu и выбором требуемого элемента. Если элементы отображаются не в начале представления, то сначала происходит прокрутка к верху и только потом выполняется вытягивание верхнего меню. Данный метод не работает с меню, сформированными динамически.

Примеры:

driver.execute_script('app:pullDownTo', 'some text label')

или

driver.execute_script('app:pullDownTo', index)

app:pushUpTo

Выполняет действие "Вытягивание вверх" ("PushUp") с вызовом "PushUpMenu" и выбором требуемого элемента. Если элементы отображаются не в конце представления, то сначала происходит прокрутка до конца и только потом вытягивается нижнее меню. Данный метод не работает с меню, сформированными динамически.

Примеры:

driver.execute_script('app:pushUpTo', 'some text label')

или

driver.execute_script('app:pushUpTo', index)

app:scrollToItem

Выполняет прокрутку до определённого элемента. Метод завершается, когда указанный элемент становится полностью видимым или после 10 неудачных попыток изменить его положение. При неудачном пролистывании исключение не возникает.

Пример:

driver.execute_script('app:scrollToItem', 'ContextMenu_0x12345678')

ContextMenu_0x12345678 — идентификатор элемента, который необходимо найти до использования этого метода (например, с помощью find_element или find_elements).

app:swipe

Выполняет свайп (движение от центра экрана к краям) в выбранном направлении.

Пример:

driver.execute_script('app:swipe', 'left')

Допустимые направления:

  • left;
  • right;
  • up;
  • down.

app:waitForPageChange

Синхронно ожидает изменения страницы. Метод возвращает управление в программу или после любого изменения на странице или по достижении установленного таймаута. Данный метод не работает со страницами, использующими SplitView.

Пример:

driver.execute_script('app:waitForPageChange', 1000)

1000 — таймаут в миллисекундах ожидания изменения.

app:waitForPropertyChange

Синхронно ожидает изменения значения свойства элемента. Метод возвращает управление в программу или после указанного изменения или по достижении установленного таймаута.

Пример:

driver.execute_script('app:waitForPropertyChange', 'ContextMenu_0x12345678', 'opened', true, 10000)

ContextMenu_0x12345678 — идентификатор элемента, который необходимо найти до использования этого метода (например, с помощью find_element или find_elements).

Можно использовать None в качестве значения свойства, чтобы ждать любого изменения свойства, или точное значение, чтобы следить за ним.

10000 — таймаут в миллисекундах для ожидания изменения.

system:shell

Выполняет shell-скрипт или команду на устройстве с привилегиями root. Необходимо использовать с осторожностью.

Пример:

output = driver.execute_script('system:shell', '/bin/sh', ['-c', 'ls -la /'])
print(output)

или

output = driver.execute_script('system:shell', 'ls', ['-la', '/'])
print(output)

system:shellIncludeStderr

Выполняет shell-скрипт или команду на устройстве с привилегиями root с возможностью обработки stdErr, stdOut и exitcode, возвращаемыми при выполнении скрипта. Необходимо использовать с осторожностью.

Пример:

driver.execute_script('system:shellIncludeStderr', '/bin/sh', ['-c', 'ls -la /'])
stdout = result['stdout']
stderr = result['stderr']
exitcode = result['exitcode']

Список методов для execute_script и execute_async_script, используемых для тестирования специальных сценариев

app:emulatefillMemory

Эмулирует использование всей свободной и доступной памяти. Выделяет память в цикле до тех пор, пока операционная система не уничтожит процесс. Принимает количество мегабайт для выделения памяти оператором new() и таймаут (в миллисекундах) для одной итерации цикла.

Примеры:

  • C выделением 100 Мб и ожиданием 5 сек после каждого выделения в цикле:

    driver.execute_script('app:emulatefillMemory', 100, 5000)
    
  • C выделением 100 Мб и стандартным ожиданием (3 сек) на каждой итерации цикла:

    driver.execute_script('app:emulatefillMemory', 100)
    

app:emulateFreeze

Эмулирует зависание приложения до истечения заданного таймаута (в миллисекундах). По умолчанию таймаут составляет 10 секунд (10000 мс).

Примеры:

  • C таймаутом 5 сек:

    driver.execute_script('app:emulateFreeze', '5000')
    
  • C таймаутом по умолчанию:

    driver.execute_script('app:emulateFreeze')
    

app:emulateMemoryLeak

Эмулирует утечку памяти. Принимает количество мегабайт для выделения памяти оператором new() и таймаут (в миллисекундах) после выделения.

Примеры:

  • C выделением 100 Mб и ожиданием 5 сек:

    driver.execute_script('app:emulateMemoryLeak', 100, 5000)
    
  • C выделением 100 Mб и стандартным ожиданием (3 сек):

    driver.execute_script('app:emulateMemoryLeak', 100)
    

app:emulateNullPtrCrash

Эмулирует аварийное завершение программы из-за обращения к нулевому указателю.

Пример:

driver.execute_script('app:emulateNullPtrCrash')

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.