Instrucciones comunes de automatización de APPium

Instrucciones comunes de automatización de APPium

Configuración de conexión común

desired_caps = {
    'platformName': 'Android',    # 被检测手机系统 安卓 or 苹果
    'platformVersion': '5.1.1',    # 手机安卓版本
    # 'deviceName': '127.0.0.1:62001',    # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
    'deviceName': 'emulator-5554',
    'appPackage': 'com.tencent.mobileqq',    # 启动APP Package名称
    'appActivity': '.activity.SplashActivity',   # 启动Activity的名称
    'noReset': True,  # 不重置APP
    'newCommandTimeout': 6000,    # 加长操作时间,默认一分钟后自动关闭
    # 以上必填,以下选填
    'unicodeKeyboard': True,    # 使用unicode输入法,输入中文时需要使用,填True,看模拟器输入法,有些需要安装,有些不需要
    'resetKeyboard': True,    # 执行完程序回复原来输入法
    # 'automationName': 'UiAutomator2', # 获取toast信息弹出框需添加,但需要先配置UiAutomator2
    # 'app': r'D:\apk\bili.apk',	# 测试apk包的路径,如果有了app就不需要APP Package和Activity,反理同之
}

Conéctese a Appium Server e inicialice el entorno de automatización

from appium import webdriver

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

Espera implícita y espera explícita

Espera implícita

Cuando no se encuentra un elemento, no devuelve inmediatamente un error de que no se puede encontrar el elemento. Pero periódicamente (cada medio segundo) vuelve a encontrar el elemento, mucho tiempo hasta que el elemento se encuentra o excede la espera máxima especificada, entonces lanza una excepción (si es find_elementsun método de clase, devuelve una lista vacía).

El objeto Webdriver de Selenium tiene un método llamado implicitly_wait

Este método acepta un parámetro para especificar el tiempo máximo de espera.

# 设置缺省等待时间
driver.implicitly_wait(10)

Espera explícita

Como su nombre lo indica, la espera explícita es establecer un tiempo de espera fijo después de ejecutar el código y luego continuar ejecutándose, el método de suspensión comúnmente utilizado del módulo de tiempo

Este método acepta un parámetro para especificar el tiempo máximo de espera.

import time
time.sleep(1)

Herramienta de visualización de elementos de interfaz

Al realizar la automatización de Selenium Web, para encontrar el elemento, visualizamos las características del elemento a través de la barra de herramientas del desarrollador del navegador, y ubicamos el elemento según estas características (atributos y ubicación)

Para que Appium automatice las aplicaciones móviles, también necesita herramientas para ver las características de los elementos de la interfaz.

Las herramientas de visualización más utilizadas son: uiautomateviewer y Appium en el paquete Android Sdk

Elemento de posicionamiento

Appium se basa en Selenium, por lo que las reglas básicas para localizar elementos son las mismas que las del código de Selenium:

  • El método find_element_by_XXX devuelve el primer elemento que cumple las condiciones y lanza una excepción si no se encuentra
  • El método find_elements_by_XXX devuelve una lista de todos los elementos que cumplen las condiciones, pero devuelve una lista vacía si no se encuentra
  • Llame a este método a través del objeto WebDriver, el alcance de búsqueda es la interfaz completa
  • Llame a este método a través del objeto WebElement, el ámbito de búsqueda es el nodo hijo del nodo

Según DNI

En el tutorial de automatización web de Selenium, si puede seleccionar el elemento de posicionamiento basado en el ID, es mejor usar el ID, porque normalmente el ID es único, por lo que la selección basada en el ID es eficiente.

Cuando la aplicación de Android está automatizada, también se puede buscar por ID.

Pero este ID es el atributo resource-id del elemento de la aplicación de Android

Usa el siguiente código

driver.find_element_by_id('')

Según CLASS NAME

El atributo de clase de los elementos de la interfaz de Android se basa en realidad en el tipo de elemento, similar al nombre de etiqueta en la web, por lo que generalmente no es único.

Por lo general, seleccionamos elementos basados ​​en el atributo de clase y tenemos que seleccionar más de uno.

Por supuesto, si está seguro de que el tipo de elemento de interfaz que está buscando es solo uno en la interfaz actual, puede seleccionarlo de forma única en función de la clase.

Usa el siguiente código

driver.find_elements_by_class_name('android.widget.TextView')

Según ACCESIBILIDAD ID

El atributo content-desc de un elemento se utiliza para describir la función del elemento.

Si el elemento de la interfaz que se va a consultar tiene un atributo content-desc, podemos usarlo para localizar el elemento seleccionado.

Usa el siguiente código

driver.find_element_by_accessibility_id('')

XPath

Appium también admite la selección de elementos a través de Xpath.

Pero su confiabilidad y rendimiento no están tan automatizados como Selenium Web. Porque Web Automation es compatible con Xpath mediante el navegador y Appium Xpath es compatible con Appium Server.

Después de todo, la madurez de los productos de navegador es mucho mayor que la de Appium.

Por supuesto, Xpath es una gramática estándar, por lo que las reglas gramaticales de las expresiones aquí son las mismas que la gramática de Xpath en Selenium aprendida antes, como

driver.find_element_by_xpath('')

Nota:

En la automatización de selenio, cada nombre de nodo en la expresión xpath es el nombre de etiqueta de html.

Pero en appium, el nombre de cada nodo en la expresión xpath es el valor del atributo de clase del elemento.

Por ejemplo: para seleccionar todos los nodos de texto, use el siguiente código

driver.find_element_by_xpath('//android.widget.TextView')

Operación del teclado Appium

La extensión appium proporciona el método pressKeyCode (). Este método es exclusivo de Android.

Teclas de operación de teclado comunes:

KEYCODE_HOME Inicio de distribución

Tecla de menú KEYCODE_MENU

KEYCODE_BACK clave de retorno

KEYCODE_ENTER Introducir clave

KEYCODE_ESCAPE ESC 键

KEYCODE_CTRL_LEFT Control + Izquierda

KEYCODE_CTRL_RIGHT Control + Derecha

como:

from appium.webdriver.extensions.android.nativekey import AndroidKey

driver.pressKeyCode(AndroidKey.enter)

Supongo que te gusta

Origin blog.csdn.net/weixin_45609519/article/details/106670484
Recomendado
Clasificación