Cómo llamar al servidor Appium de forma remotaAppium Server tiene dos funciones principales: es un servidor http que recibe específicamente los comandos enviados por el cliente a través del protocolo REST basado en http. Es un cliente de arranque. : Después de recibir los comandos del cliente, debe descubrir cómo enviar estos comandos al cargador de arranque de la máquina Android de destino para que el uiatuomator haga las cosas. A través del artículo anterior "Análisis del código fuente del servidor Appium: iniciar y ejecutar Express". http Server" analizamos cómo funciona Appium Server como servidor http. Así que hoy analizaremos el segundo punto, cómo Appium Server sirve como cliente de arranque para enviar comandos a la máquina Android de destino para controlar el marco uiautomator. 1. Cómo sirve Appium Server como cliente de arranque para enviar comandos a la máquina Android de destino. conducir El marco uiautomator hace cosas. Controlador y enrutamientoEnrutamiento en el patrón de diseño MVC En nuestro artículo anterior que describe el servidor appium, en el proceso de iniciar el servidor http, después de crear una instancia del servidor appium, el siguiente paso es configurar el enrutamiento de datos para las solicitudes del cliente: [javascript] view Plaincopyvar main = function (args, readyCb, doneCb) {... enrutamiento(appiumServer... } Aquí, debe tener conocimientos previos del patrón de diseño MVC, creo que si ha realizado aplicaciones de interfaz o. programación web, debería estar muy familiarizado con este famoso patrón de diseño de desacoplamiento y reducción de dependencias. Si no lo comprende, consulte Baidu Google. Aquí extraeré brevemente la función del controlador en nuestro servidor http: El núcleo de MVC es el controlador (Controlador), que es responsable de procesar todas las solicitudes transmitidas por el cliente http y decidir el contenido de la respuesta al cliente http. Sin embargo, el controlador no es responsable de decidir cómo se debe mostrar el contenido. En cambio, responde a la arquitectura MVC con la forma específica del contenido. Finalmente, la arquitectura MVC decide cómo responder al contenido del cliente http en función. la forma de la respuesta. Es responsabilidad de la Vista decidir a qué responder. La arquitectura expresa de nodejs utiliza el marco MVC, por lo que aquí está nuestro Enrutamiento. Primero buscamos el archivo de enrutamiento correspondiente y luego entramos y echamos un vistazo. Primero echemos un vistazo a las definiciones de variables anteriores en main.js: var http = require('http'), express = require('express'), ...routing = require('. /routing.js' ) Puede ver el archivo route.js en el directorio main.js. Después de exportar, abrimos el archivo: var controlador = require('. /controller.js'); rest; var globalBeforeFilter = controlador.getGlobalBeforeFilter(appium); // Hacer que appium esté disponible para todas las solicitudes http REST.
rest.all('/wd/*', globalBeforeFilter); routeNotYetImplemented(rest); rest.all('/wd/hub/session/*', controlador.sessionBeforeFilter); ', controlador.getStatus); rest.post ('/wd/hub/session', controlador.createSession); rest.get ('/wd/hub/session/:sessionId?', controlador.getSession); ('/wd/hub/session/: sessionId? controlador.deleteSession); rest.get ('/wd/hub/session/: sessionId?/context', controlador.getCurrentContext); /session/:sessionId?post('/wd/hub/session/:sessionId?/context', controlador.setContext'); ); rest.post('/wd/hub/session/: sessionId?/element', controlador.findElement); rest.post('/wd/hub/session/: sessionId?/elementos', controlador.findElements); rest.post('/wd/hub/session/:sessionId?/element/:elementId?/controller.setValue); rest.post('/wd/hub/session/:sessionId?/element? controlador.setValue); rest.post('/wd/hub/session/:sessionId?/element/:elementId?/click', controlador.doClick);...La ruta comienza especificando el controlador que maneja el cliente http que viene a través de nuestro MVC. es controlador.js, que es un script javascript, y luego obtiene la instancia expresa pasada a través de la llamada anterior desde appiumServer y asígnala a la variable rest, y luego configura globalBeforeFilter. El controlador no está definido en el archivo de enrutamiento para manejar el. solicitud del cliente. En este caso, el siguiente paso es definir el método para que el controlador maneje varias solicitudes del cliente, por ejemplo, hacer clic en un control en la parte inferior de la solicitud del cliente. No los enumeraré todos aquí. Lo que hay que tener en cuenta aquí es que todos los grandes signos de interrogación representan variables. El valor real se proporciona cuando el cliente lo transmite aquí, por lo que al analizar, puede obtener directamente el elementId para obtener el valor real.