Android

Dependencias

Los objetos binarios de ChromeDriver se pueden encontrar empaquetados como archivos ZIP para varias plataformas de host en la página de descargas.

Apps compatibles

ChromeDriver admite la ejecución de pruebas en el navegador Chrome (versión 30 o superior) y en apps basadas en WebView a partir de Android 4.4 (KitKat) que hayan habilitado la depuración web y JavaScript. Puedes instalar la app de Chrome desde:

Estable: https://play.google.com/store/apps/details?id=com.android.chrome

Vinculaciones del lenguaje Selenium WebDriver

Debes instalar las vinculaciones de lenguaje estándar del proyecto selenio para escribir las pruebas en el lenguaje que elijas. Puedes acceder a esta biblioteca desde tu administrador de paquetes local o el proyecto Selenium (https://www.seleniumhq.org/download/). Por ejemplo, las vinculaciones de lenguaje para Python se pueden instalar con pip.

$ pip install selenium

SDK de Android

El SDK se puede descargar en developer.android.com/sdk/.

Requisitos del dispositivo

A partir de la versión 33 de Chrome, ya no se requiere un dispositivo con permisos de administrador. Si se ejecutaban pruebas en versiones anteriores de Chrome, los dispositivos debían tener permisos de administrador, ya que ChromeDriver requería acceso de escritura al directorio /data/local para configurar los argumentos de línea de comandos de Chrome.

Ejecutar ChromeDriver

  1. Inicia el servidor Android Debug Bridge (adb) del SDK de Android:

    $ adb start-server
    
  2. Si realizas pruebas en la app de Chrome antes de la versión 33, asegúrate de que el shell de adb tenga acceso de lectura y escritura al directorio /data/local del dispositivo:

     $ adb shell su -c chmod 777 /data/local
    
  3. Generalmente, se recomienda que inicies ChromeDriver a través de la biblioteca Selenium, aunque también puedes iniciarlo de forma manual desde la línea de comandos. Consulta cómo comenzar para obtener más información.

    $ ./chromedriver
    

Opciones específicas de Android

Las siguientes opciones de Chrome se aplican a las apps de Chrome y WebView:

  • androidPackage: Es el nombre del paquete de la app de Chrome o WebView.
  • androidDeviceSerial: (Opcional) Es el número de serie del dispositivo en el que se iniciará la app (consulta la sección Varios dispositivos a continuación).
  • androidUseRunningApp: Adjuntar a una app que ya está en ejecución en lugar de iniciarla con un directorio de datos borrado (opcional)

Las siguientes capacidades solo se aplican a las apps de WebView.

  • androidActivity: Es el nombre de la actividad que aloja la WebView.
  • androidProcess: (Opcional) Es el nombre del proceso de la actividad que aloja la WebView (como lo indica ps). Si no se proporciona, se supone que el nombre del proceso es el mismo que androidPackage.

Ejecutar una prueba

Las pruebas deben pasar el nombre del paquete de la app al ChromeDriver mediante la opción androidPackage. Por ejemplo, una prueba mínima de Python se ve de la siguiente manera:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('androidPackage', 'com.android.chrome')
driver = webdriver.Chrome('./chromedriver', options=options)
driver.get('https://google.com')
driver.quit()

Varios dispositivos

Si quieres usar un dispositivo en particular para una sesión, especifica androidDeviceSerial como opción de Chrome.

Si no se especifica el número de serie, el servidor selecciona de forma aleatoria un dispositivo sin usar para asociarlo a cada sesión. Se muestra un error si todos los dispositivos ya tienen sesiones activas, por lo que las pruebas deben asegurarse de llamar a quit cuando finalicen.

Conéctate a wd/hub

Si las pruebas esperan conectarse a wd/hub, puedes agregar --url-base=wd/hub cuando inicies el servidor:

$ ./chromedriver --url-base=wd/hub