Herramientas e Implementación.
Para efectos del Appium Test Framework se han elegido el siguiente conjunto de
herramientas:
LENGUAJE DE PROGRAMACIÓN:
Node Js.
LIBRERÍAS:
pip (9.0.1)
Appium Python Client.
APPIUM:
Appium Desktop.
Appium Server (Requiere NPM).
Android Studio.
Java JDK.
Android JDK.
o Ui Automator Viewer
Instalación De Python Desde 0
IMPORTANTE: Si ya tienes instalado python, omite este paso.
1. Desde la web de Python ubicada en este enlace descargue la Versión 3.6.
2. Una vez que haya descargado el archivo .exe de instalación ejecútelo.
En el siguiente paso se describe que debe tomar en cuenta durante la instalación.
3. La ruta de instalación por defecto de Python 3.6 corresponde a la carpeta de
usuario, pero para efectos del Framework que vamos a crear, es importante
mantener el conjunto de herramientas dentro de una misma ubicación. Para ello
debemos crear un directorio en la raíz de nuestro disco local al cual llamaremos
C:\AppiumFramework, dentro de esta ubicación crearemos otra carpeta a la cual
le colocaremos el nombre de nuestra versión de Python quedando de la siguiente
manera: C:\AppiumFramework\Python36.
4. Una vez elegido el directorio de la instalación hacer clic en “Install”, esto iniciara
la instalación de todas las librerías y archivos necesarios para correr Python en
nuestro ordenador.
5. Una vez finalizada la instalación de Python, debemos corroborar que los archivos
estén en la ruta dispuesta para la instalación. C:\AppiumFramework\Python36
C:\AppiumFramework\Python36:
DLLs
Doc
Include
Lib
Libs
python.exe
python3.dll
python36.dll
pythonw.exe
Scripts
Selenium
Tcl
Tools
pip --version
La consola debe devolver la versión actual de la instalación de python, en este
caso: pip 9.0.1 from C:\AppiumFramework\Python36\Lib\site-packages (python
3.6)
Ingresar a https://bootstrap.pypa.io/get-pip.py.
Descargar el archivo get-pip.py en la ruta C:\AppiumFramework\Python36
Abrir la ventana de comandos (CMD) o el powershell.
Ejecutar los comandos:
o cd C:\AppiumFramework\Python36
(o ubicarse en la ruta donde se descargó el get-pip.py)
o python –m get-pip.py
(para ejecutar la instalación de pip utilizando python)
Una vez que se haya ejecutado la instalación de pip, se debe corroborar
nuevamente que esta se pueda ejecutar desde la ventana de comandos.
Escribir en el powershell o en la ventana de comandos:
o pip –version
C:\AppiumFramework\Python36\;
C:\AppiumFramework\Python36\python.exe;
C:\AppiumFramework\Python36\Lib;
C:\AppiumFramework\Python36\libs;
C:\AppiumFramework\Python36\Lib\site-packages;
C:\AppiumFramework\Python36\Scripts\;
C:\AppiumFramework\Python36\;C:\AppiumFramework\Python36\python.exe;C:\Appi
umFramework\Python36\Lib;C:\AppiumFramework\Python36\libs;C:\AppiumFramewor
k\Python36\Lib\site-packages;C:\AppiumFramework\Python36\Scripts\;
Péguelas en la ventana:
Cada variable debe estar separada por punto y coma (;) por favor sea cuidadoso
con esto, no dañara el sistema, pero si obstaculizara el objetivo si no se hace
correctamente.
La variable Path es leída por Windows y con ella podrá ejecutar los comandos
relacionados a python desde la consola o el PowerShell.
Pero para efectos del Pydev, un plugin con el cual utilizaremos python a través de
Eclipse IDE debemos añadir otra variable llamada PYTHONPATH.
python --versión
Devuelve: Python 3.6.3
pip --versión
Devuelve: pip 9.0.1 from C:\AppiumFramework\Python36\Lib\site-packages
(python 3.6)
COMPROBACIÓN :
Para corroborar la instalación o la existencia de las librerías en python se deben ejecutar
las siguientes instrucciones en el PowerShell o en la consola de Windows:
pip list
Devuelve: La lista de librerías instaladas en Pyhton 3.6
Configuración de Eclipse IDE con Pydev
Eclipse es una plataforma de desarrollo, diseñada para ser extendida de forma
indefinida a través de plug-ins. Fue concebida desde sus orígenes para convertirse en una
plataforma de integración de herramientas de desarrollo. No tiene en mente un lenguaje
específico, sino que es un IDE genérico, aunque goza de mucha popularidad entre la
comunidad de desarrolladores del lenguaje Java usando el plug-in JDT que viene incluido
en la distribución estándar del IDE.
Es importante resaltar que es necesario que sea la misma ruta, pero que si
debe ser una ruta relativamente sencilla de ubicar dado a que esta se
agregara posteriormente a las variables de entorno de Windows (path) y
la variable de entorno de Python (PYTHONPATH).
C:\AppiumFramework\Appium_Server
Vamos a la consola de comandos y escribimos:
npm install appium -g --prefix C:\AppiumFramework\Appium_Server
o npm install appium –g: instalara Appium de manera global para
todos los usuarios.
o --prefix C:\AppiumFramework\Appium_Server: Le indica a npm
la ruta personalizada para la instalación de Appium.
Una vez que se haya descargado los archivos de la instalación de Appium server,
podrás verlo de esta manera en el directorio que indicaste:
Java –version
Luego seleccionamos todas las versiones de android que queremos tener presente en
nuestro SDK y pulsamos ok.
Esperamos que termine la descargas de las versiones de android al SDK.
Al finalizar, solo nos queda un paso mas para terminar de configurar el Android
SDK.
VARIABLES DE ENTORNO DE ANDROID SDK
o %ANDROID_HOME%;
o %ANDROID_HOME%\platform-tools;
o %ANDROID_HOME%\tools;
o %ANDROID_HOME%\build-tools;
o %ANDROID_HOME%\tools\bin;
%ANDROID_HOME%\platform-tools
Es igual a la ruta:
C:\AppiumFramework\android_sdk\platform-tools
COMPROBACIÓN:
Para verificar que la instalacion de los componentes Android SDK, Java JDK se hayan
instalado correctamente, la mejor manera es ejecutar el Ui Automator Viewer:
UI AUTOMATOR VIEWER:
UI automator viewer es una herramienta de GUI para escanear y analizar los
componentes de la interfaz de usuario de una aplicación de Android. Con UI automator
viewer, puede inspeccionar la interfaz de usuario de una aplicación de Android para
averiguar la jerarquía y ver diferentes propiedades (id, texto ...) del elemento.
Debe empezar a verse el contenido del celular dentro del area de trabajo del
IU Automator Viewer en computador.
https://www.youtube.com/watch?v=uA54T6R8nhs
Instalando Appium Desktop.
Appium desktop permite iniciar una interfaz gráfica para tu servidor de Appium.
Podríamos iniciar el servidor haciendo clic en Start server v1.7., debe iniciar el log
de la misma manera que se mostró a través de la consola de Windows.
"platformName": "android",
"platformVersion": "5.0.1",
"deviceName": "Android Emulator",
"app": "C:\\AppiumFramework\\APK\\ar.com.santander.rio.mbanking.apk",
"NoReset": true
La documentación oficial esta disponible en el siguiente enlace:
https://github.com/appium/appium/blob/master/docs/en/writing-running-
appium/caps.md
Appium Desktop:
Debemos crear un nuevo módulo dentro del paquete Test, y definimos lo siguiente:
import unittest
from appium import webdriver
class ContactAppTestAppium(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'android'
desired_caps['platformVersion'] = '5.0.1'
desired_caps['deviceName'] = 'GT-I9500'
desired_caps['app'] =
'C:\\AppiumFramework\APK\\ar.com.santander.rio.mbanking.apk'
desired_caps['NoReset'] = True
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
def test_ClickRefreshLink(self):
refreshButton =
self.driver.find_element_by_id("ar.com.santander.rio.mbanking:id/messageAlert")
self.assertTrue(refreshButton.is_displayed())
refreshButton.click()
## Right now we are just verify the displayed message on the Phone
## You can right code to handle that toast message and Verify that message
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(ContactAppTestAppium)
unittest.TextTestRunner(verbosity=2).run(suite)
Vamos a diseccionar el código:
import unittest
from appium import webdriver
Definimos en el método SetUp las mismas capabilities descritas para Appium Server:
desired_caps = {}
desired_caps['platformName'] = 'android'
desired_caps['platformVersion'] = '5.0.1'
desired_caps['deviceName'] = 'GT-I9500'
desired_caps['app'] =
'C:\\AppiumFramework\APK\\ar.com.santander.rio.mbanking.apk'
desired_caps['NoReset'] = True
Con la diferencia que debe añadirse el servidor y el puerto con el cual se
inicializo appium, ya sea en su versión desktop o server.
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
Esta prueba consiste en hacer clic sobre un elemento, básicamente aquí solo existen
Xpath y ID´s, el cual vamos a extraer desde Appium desktop los ids correspondientes a
la app que vamos a testear:
def test_ClickRefreshLink(self):
refreshButton =
self.driver.find_element_by_id("ar.com.santander.rio.mbanking:id/messageAlert")
self.assertTrue(refreshButton.is_displayed())
refreshButton.click()