ES3035135T3 - Gui element acquisition using a plurality of alternative representations of the gui element - Google Patents
Gui element acquisition using a plurality of alternative representations of the gui elementInfo
- Publication number
- ES3035135T3 ES3035135T3 ES19927556T ES19927556T ES3035135T3 ES 3035135 T3 ES3035135 T3 ES 3035135T3 ES 19927556 T ES19927556 T ES 19927556T ES 19927556 T ES19927556 T ES 19927556T ES 3035135 T3 ES3035135 T3 ES 3035135T3
- Authority
- ES
- Spain
- Prior art keywords
- representations
- gui
- alternative
- representation
- applying
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Un método, aparato y producto para la adquisición de elementos de GUI mediante una pluralidad de representaciones alternativas del elemento. El método comprende: obtener una selección de un elemento de la interfaz gráfica de usuario (GUI); obtener un conjunto de representaciones del elemento de GUI, que comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI; aplicar el conjunto de representaciones para identificar el elemento de GUI en la GUI de un programa, donde dicha aplicación comprende, para cada representación alternativa, aplicar independientemente cada representación para identificar uno o más elementos de GUI correspondientes a cada representación; y, en respuesta a la determinación de que la aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener un conjunto de representaciones modificado. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Adquisición de elemento GUI usando una pluralidad de representaciones alternativas del elemento GUI
Campo técnico
La presente divulgación se refiere a Interfaces Gráficas de Usuario (GUI) en general, y a adquisición de elemento de GUI, en particular.
Antecedentes
Una aplicación que tiene una interfaz gráfica de usuario (GUI) puede adoptar muchas formas. Puede tener una versión web, ejecutándose en navegadores como CHROME™, FIREFOX™, o similares. Adicionalmente o como alternativa, la aplicación puede tener una versión de escritorio, ejecutándose en WINDOWS™, OSX™, o similares. Adicionalmente o como alternativa, la aplicación puede tener una versión móvil nativa, ejecutándose en iOS™, ANDROIDE™, o similares. Adicionalmente o como alternativa, la aplicación puede tener una versión web móvil, ejecutándose en navegadores móviles. Adicionalmente o como alternativa, la aplicación puede haberse escrito usando un marco multiplataforma tal como XAMARIN™, REACCIÓN NATIVA™, o similares.
Debido a las diferencias en la plataforma subyacente, cada versión puede ser diferente. Por ejemplo, incluso usando el mismo lenguaje de programación puede dar como resultado diferentes resultados, tal como el caso debido a diferentes motores de JavaScript para cada plataforma. Adicionalmente o como alternativa, debido a diferentes tamaños de pantalla, capacidades o similares, la misma aplicación puede tener diferente GUI en cada plataforma.
Adicionalmente o como alternativa, durante el ciclo de vida de una aplicación puede cambiar. Las características se pueden añadir, eliminar o cambiar de lugar. Adicionalmente o como alternativa, la experiencia de usuario (UX) puede cambiar, dando como resultado una GUI cambiante a lo largo del tiempo. Adicionalmente o como alternativa, los usuarios con diferentes roles o permisos pueden ver diferentes vistas de la misma pantalla.
El documento US20120124495A1 describe un método implementado por ordenador para identificar un objeto no diferenciado (210) en un guion usado para acceder a una interfaz de usuario (UI) (200). Se selecciona un objeto objetivo (210) en la UI 200. El objeto objetivo 210 se comprueba para atributos únicos en comparación con atributos comunes a al menos otro objeto en la UI 200. Cuando el objeto objetivo carece de atributos únicos, un objeto único (220) con atributos únicos en la UI 200 se identifica como un objeto de referencia (220). Se define una relación (230) entre el objeto de referencia (220) y el objeto objetivo (210). La relación (230) se registra en un guion (130) configurado para identificar de manera inequívoca el objeto objetivo (210).
El documento US20110239141A1 describe un método para identificar un elemento de GUI. El método incluye generar una información de identificación de elemento de GUI al: mostrar una GUI que incluye un elemento de g U i objetivo; analizar la GUI mostrada, para adquirir información de atributos para el elemento de GUI objetivo; adquirir información adicional, distinta de la información de atributo, relacionada con el elemento de GUI objetivo; y procesar la información de atributo y la información adicional para generar la información de identificación para el elemento de GUI objetivo.
La literatura no de patentes, "An Extensible Heuristic-Based Framework for GUI Test Case Maintenance", OSFTWARE TESTING, VERIFICATION AND VALIDATION WORKSHOPS, 2009. ICSTW'09. INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, EE. UU., 1 de abril de 2009 (2009-04-01), páginas 251-254, ISBN:978-1-4244-4356-7, describe una solución general al problema del mantenimiento de casos de prueba de GUI. Debido a la forma en que a menudo se implementan los casos de prueba de GUI, los cambios relativamente menores en la construcción de la GUI pueden provocar un mal funcionamiento de un gran número de ejecuciones de casos de prueba, a menudo porque los elementos de GUI a los que se hace referencia en los casos de prueba se han renombrado, movido o alterado de otra manera. La solución se basa en heurísticas que intentan hacer coincidir elementos de GUI a través de versiones, y demuestra el uso de algunas heurísticas con soporte de marco.
Breve sumario
Una realización de la materia objeto divulgada es un método que comprende: obtener una selección de un elemento de interfaz gráfica de usuario (GUI); obtener un conjunto de representaciones del elemento de GUI, en donde el conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI; aplicar el conjunto de representaciones para identificar el elemento de GUI en una GUI de un programa, en donde dicha aplicación del conjunto de representaciones comprende, para cada representación de las representaciones alternativas, aplicar independientemente cada representación para identificar uno o más elementos de GUI que corresponden a cada representación; y en respuesta a determinar que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener un conjunto de representaciones modificado. Dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a una representación alternativa de las representaciones alternativas, en donde dicha obtención del conjunto de representaciones modificado comprende eliminar la representación alternativa del conjunto de representaciones, por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona una resultado definitivo.
Opcionalmente, dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a que no se identifica ningún elemento en la GUI usando la representación alternativa.
Las representaciones alternativas comprenden opcionalmente una primera representación alternativa y una segunda representación alternativa; en donde dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de un primer elemento usando la primera representación y la identificación de un segundo elemento usando la segunda representación, en donde el primer elemento y el segundo elemento son diferentes.
Opcionalmente, dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de dos o más elementos usando una representación alternativa.
Opcionalmente, el resultado indefinido fue provocado por una primera representación, en donde la primera representación está comprendida por la pluralidad de representaciones alternativas, en donde dicha obtención del conjunto de representaciones modificado comprende eliminar la primera representación del conjunto de representaciones y agregar una nueva representación al conjunto de representaciones, en donde la nueva representación está configurada para identificar de manera inequívoca el elemento de GUI en la GUI del programa, por lo que aplicar el conjunto de representaciones modificado en una GUI del programa proporciona un resultado definitivo.
Opcionalmente, el método comprende adicionalmente: aplicar la nueva representación en una GUI original, en donde el conjunto de representaciones se determinó basándose en la GUI original, por lo que la nueva representación también está configurada para identificar de manera inequívoca el elemento de GUI en la GUI original.
Opcionalmente, dicha aplicación del conjunto de representaciones se realiza en un dispositivo de cliente; en donde, en respuesta al dispositivo de cliente, determinar que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información a un servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado; y en donde dicha obtención del conjunto de representaciones modificado comprende obtener por el dispositivo cliente el conjunto de representaciones modificado del servidor.
Opcionalmente, un servidor está configurado para definir el conjunto de representaciones, en donde el servidor está configurado para transmitir el conjunto de representaciones a una pluralidad de dispositivos de cliente; en donde dicha aplicación del conjunto de representaciones se realiza en un dispositivo cliente; en donde, en respuesta a que el dispositivo cliente determine que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información al servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado y para transmitir el conjunto de representaciones modificado al pluralidad de dispositivos cliente; y en donde dicha obtención del conjunto de representaciones modificado comprende obtener por un dispositivo el conjunto de representaciones modificado del servidor, en donde el dispositivo está comprendido por la pluralidad de dispositivos de cliente.
Opcionalmente, dicha aplicación del conjunto de representaciones se realiza una pluralidad de veces, cada una de las cuales con respecto a una GUI diferente, en donde las diferentes GUI se recuperan de una base de datos histórica, reteniendo las GUI previamente encontradas por agentes informatizados.
Opcionalmente, una representación alternativa usa al menos uno de: uno o más atributos del elemento de GUI; uno o más atributos de otro elemento de GUI; una trayectoria relativa al elemento de GUI en una jerarquía de elementos; y una trayectoria absoluta al elemento de GUI en la jerarquía de elementos.
Opcionalmente, dicha obtención del conjunto de representaciones comprende: determinar un conjunto de representaciones alternativas; y seleccionar un subconjunto del conjunto de representaciones alternativas, seleccionando de este modo la pluralidad de representaciones alternativas; y en donde el conjunto de representaciones modificado se obtiene seleccionando un subconjunto diferente del conjunto de representaciones alternativas.
Opcionalmente, el método comprende adicionalmente, en respuesta a determinar que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido: mostrar la GUI a un usuario; identificar el elemento de GUI en la GUI basándose en la entrada de usuario del usuario; y en donde dicha obtención del conjunto de representaciones modificado comprende determinar un nuevo conjunto de representaciones alternativas que identifican de manera inequívoca el elemento de GUI en la GUI, en donde el conjunto de representaciones modificado comprende el nuevo conjunto de representaciones alternativas.
Opcionalmente, dicha visualización de la GUI comprende mostrar la GUI y marcar un elemento sugerido, en donde la entrada de usuario es una confirmación del elemento sugerido.
Opcionalmente, dicha obtención del conjunto de representaciones comprende aplicar un modelo predictivo para seleccionar la pluralidad de representaciones alternativas para el conjunto de representaciones de un conjunto de representaciones alternativas; en donde el modelo predictivo se entrena basándose en elementos de GUI y representaciones alternativas de los mismos.
Opcionalmente, dicha obtención del conjunto de representaciones modificado comprende aplicar un modelo predictivo para seleccionar una representación alternativa a eliminar del conjunto de representaciones, en donde el modelo predictivo se entrena basándose en datos que comprenden modificaciones manuales a conjuntos de representaciones.
Opcionalmente, el conjunto de representaciones comprende la pluralidad de representaciones alternativas y una o más representaciones alternativas adicionales; en donde el método comprende además: obtener un contexto de GUI actual de la GUI; y en donde dicha aplicación del conjunto de representaciones comprende seleccionar la pluralidad de representaciones alternativas basándose en el contexto de GUI y aplicar únicamente la pluralidad de representaciones alternativas sin aplicar la una o más representaciones alternativas adicionales.
Opcionalmente, el elemento de GUI se selecciona de un grupo que consiste en una casilla de verificación, un botón de clic, un botón de radio, una lista desplegable, un botón desplegable, un botón de alternancia, un campo de texto, un selector de fecha y hora, un campo de búsqueda, una ruta de navegación, una paginación, una etiqueta, un control deslizante, un icono, un carrusel de imágenes, una notificación, una barra de progreso, una información sobre herramientas, un cuadro de mensaje, una ventana modal, un widget, una barra de menú, una pestaña, una tabla, un elemento de imagen, una etiqueta y un acordeón.
Opcionalmente, el conjunto de representaciones comprende un conjunto de representaciones alternativas, en donde el conjunto de representaciones alternativas comprende la pluralidad de representaciones alternativas y al menos una representación alternativa más; y en donde dicha aplicación del conjunto de representaciones comprende determinar un subconjunto del conjunto de representaciones alternativas a aplicar en la GUI, en donde el subconjunto consiste en la pluralidad de representaciones alternativas, por lo que dicha aplicación aplica selectivamente solo una porción de representaciones alternativas disponibles.
Otra realización de la materia objeto divulgada es un producto de programa informático que comprende un medio de almacenamiento legible por ordenador no transitorio que retiene instrucciones de programa, instrucciones de programa que, cuando se leen por un procesador, hacen que el procesador realice lo siguiente: obtener una selección de un elemento de interfaz gráfica de usuario (GUI); obtener un conjunto de representaciones del elemento de GUI, en donde el conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI; aplicar el conjunto de representaciones para identificar el elemento de GUI en una GUI de un programa, en donde dicha aplicación del conjunto de representaciones comprende, para cada representación de las representaciones alternativas, aplicar independientemente cada representación para identificar uno o más elementos de GUI que corresponden a cada representación; y en respuesta a determinar que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener un conjunto de representaciones modificado. Dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a una representación alternativa de las representaciones alternativas, en donde dicha obtención del conjunto de representaciones modificado comprende eliminar la representación alternativa del conjunto de representaciones, por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona una resultado definitivo.
Opcionalmente, dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a que no se identifica ningún elemento en la GUI usando la representación alternativa.
Opcionalmente, las representaciones alternativas comprenden una primera representación alternativa y una segunda representación alternativa; en donde dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de un primer elemento usando la primera representación y la identificación de un segundo elemento usando la segunda representación, en donde el primer elemento y el segundo elemento son diferentes.
Opcionalmente, dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de dos o más elementos usando una representación alternativa.
Opcionalmente, el resultado indefinido fue provocado por una primera representación, en donde la primera representación está comprendida por la pluralidad de representaciones alternativas, en donde dicha obtención del conjunto de representaciones modificado comprende eliminar la primera representación del conjunto de representaciones y agregar una nueva representación al conjunto de representaciones, en donde la nueva representación está configurada para identificar de manera inequívoca el elemento de GUI en la GUI del programa, por lo que aplicar el conjunto de representaciones modificado en una GUI del programa proporciona un resultado definitivo.
Opcionalmente, dichas instrucciones de programa cuando son leídas por el procesador, hacen además que el procesador realice: aplicar la nueva representación en una GUI original, en donde el conjunto de representaciones se determinó basándose en la GUI original, por lo que la nueva representación también está configurada para identificar de manera inequívoca la elemento de GUI en la GUI original.
Opcionalmente, dicha aplicación del conjunto de representaciones se realiza en un dispositivo de cliente; en donde, en respuesta al dispositivo de cliente, determinar que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información a un servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado; y en donde dicha obtención del conjunto de representaciones modificado comprende obtener por el dispositivo cliente el conjunto de representaciones modificado del servidor.
Opcionalmente, un servidor está configurado para definir el conjunto de representaciones, en donde el servidor está configurado para transmitir el conjunto de representaciones a una pluralidad de dispositivos de cliente; en donde dicha aplicación del conjunto de representaciones se realiza en un dispositivo cliente; en donde, en respuesta a que el dispositivo cliente determine que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información al servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado y para transmitir el conjunto de representaciones modificado al pluralidad de dispositivos cliente; y en donde dicha obtención del conjunto de representaciones modificado comprende obtener por un dispositivo el conjunto de representaciones modificado del servidor, en donde el dispositivo está comprendido por la pluralidad de dispositivos de cliente.
Opcionalmente, dicha aplicación del conjunto de representaciones se realiza una pluralidad de veces, cada una de las cuales con respecto a una GUI diferente, en donde las diferentes GUI se recuperan de una base de datos histórica, reteniendo las GUI previamente encontradas por agentes informatizados.
Opcionalmente, dicha obtención del conjunto de representaciones comprende: determinar un conjunto de representaciones alternativas; y seleccionar un subconjunto del conjunto de representaciones alternativas, seleccionando de este modo la pluralidad de representaciones alternativas; y en donde el conjunto de representaciones modificado se obtiene seleccionando un subconjunto diferente del conjunto de representaciones alternativas.
Opcionalmente, dichas instrucciones de programa cuando se leen por el procesador, provocan adicionalmente que el procesador realice, en respuesta a la determinación de que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido: mostrar la GUI a un usuario; identificar el elemento de GUI en la GUI basándose en la entrada de usuario del usuario; y en donde dicha obtención del conjunto de representaciones modificado comprende determinar un nuevo conjunto de representaciones alternativas que identifican de manera inequívoca el elemento de GUI en la GUI, en donde el conjunto de representaciones modificado comprende el nuevo conjunto de representaciones alternativas.
Opcionalmente, dicha visualización de la GUI comprende mostrar la GUI y marcar un elemento sugerido, en donde la entrada de usuario es una confirmación del elemento sugerido.
Opcionalmente, dicha obtención del conjunto de representaciones comprende aplicar un modelo predictivo para seleccionar la pluralidad de representaciones alternativas para el conjunto de representaciones de un conjunto de representaciones alternativas; en donde el modelo predictivo se entrena basándose en elementos de GUI y representaciones alternativas de los mismos.
Opcionalmente, dicha obtención del conjunto de representaciones modificado comprende aplicar un modelo predictivo para seleccionar una representación alternativa a eliminar del conjunto de representaciones, en donde el modelo predictivo se entrena basándose en datos que comprenden modificaciones manuales a conjuntos de representaciones.
Opcionalmente, el conjunto de representaciones comprende la pluralidad de representaciones alternativas y una o más representaciones alternativas adicionales; en donde dichas instrucciones de programa cuando se leen por el procesador, hacen adicionalmente que el procesador realice: obtener un contexto de GUI actual de la GUI; y en donde dicha aplicación del conjunto de representaciones comprende seleccionar la pluralidad de representaciones alternativas basándose en el contexto de GUI y aplicar únicamente la pluralidad de representaciones alternativas sin aplicar la una o más representaciones alternativas adicionales.
Opcionalmente, el conjunto de representaciones comprende un conjunto de representaciones alternativas, en donde el conjunto de representaciones alternativas comprende la pluralidad de representaciones alternativas y al menos una representación alternativa más; y en donde dicha aplicación del conjunto de representaciones comprende determinar un subconjunto del conjunto de representaciones alternativas a aplicar en la GUI, en donde el subconjunto consiste en la pluralidad de representaciones alternativas, por lo que dicha aplicación aplica selectivamente solo una porción de representaciones alternativas disponibles.
Otra realización ilustrativa más de la materia objeto divulgada es un aparato que comprende un procesador y una memoria acoplada, estando adaptado el procesador para realizar las etapas de: obtener una selección de un elemento de interfaz gráfica de usuario (GUI); obtener un conjunto de representaciones del elemento de GUI, en donde el conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI; aplicar el conjunto de representaciones para identificar el elemento de GUI en una GUI de un programa, en donde dicha aplicación del conjunto de representaciones comprende, para cada representación de las representaciones alternativas, aplicar independientemente cada representación para identificar uno o más elementos de GUI que corresponden a cada representación; y en respuesta a determinar que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener un conjunto de representaciones modificado. Dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a una representación alternativa de las representaciones alternativas, en donde dicha obtención del conjunto de representaciones modificado comprende eliminar la representación alternativa del conjunto de representaciones, por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona una resultado definitivo.
Opcionalmente, dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a que no se identifica ningún elemento en la GUI usando la representación alternativa.
Opcionalmente, las representaciones alternativas comprenden una primera representación alternativa y una segunda representación alternativa; en donde dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de un primer elemento usando la primera representación y la identificación de un segundo elemento usando la segunda representación, en donde el primer elemento y el segundo elemento son diferentes.
Opcionalmente, dicha aplicación del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de dos o más elementos usando una representación alternativa.
Opcionalmente, el resultado indefinido fue provocado por una primera representación, en donde la primera representación está comprendida por la pluralidad de representaciones alternativas, en donde dicha obtención del conjunto de representaciones modificado comprende eliminar la primera representación del conjunto de representaciones y agregar una nueva representación al conjunto de representaciones, en donde la nueva representación está configurada para identificar de manera inequívoca el elemento de GUI en la GUI del programa, por lo que aplicar el conjunto de representaciones modificado en una GUI del programa proporciona un resultado definitivo.
Opcionalmente, dicho procesador está configurado adicionalmente para: aplicar la nueva representación en una GUI original, en donde el conjunto de representaciones se determinó basándose en la GUI original, por lo que la nueva representación también está configurada para identificar de manera inequívoca el elemento de GUI en la GUI original.
Opcionalmente, dicha aplicación del conjunto de representaciones se realiza en un dispositivo de cliente;
en donde, en respuesta al dispositivo de cliente, determinar que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información a un servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado; y en donde dicha obtención del conjunto de representaciones modificado comprende obtener por el dispositivo cliente el conjunto de representaciones modificado del servidor.
Opcionalmente, el aparato es un dispositivo de cliente, en donde un servidor está configurado para definir el conjunto de representaciones, en donde el servidor está configurado para transmitir el conjunto de representaciones a una pluralidad de dispositivos de cliente; en donde dicha aplicación del conjunto de representaciones se realiza por dicho dispositivo de cliente; en donde, en respuesta a que el dispositivo cliente determine que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información al servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado y para transmitir el conjunto de representaciones modificado al pluralidad de dispositivos cliente; y en donde dicha obtención del conjunto de representaciones modificado comprende obtener por un dispositivo el conjunto de representaciones modificado del servidor, en donde el dispositivo está comprendido por la pluralidad de dispositivos de cliente.
Opcionalmente, dicha aplicación del conjunto de representaciones se realiza una pluralidad de veces, cada una de las cuales con respecto a una GUI diferente, en donde las diferentes GUI se recuperan de una base de datos histórica, reteniendo las GUI previamente encontradas por agentes informatizados.
Opcionalmente, dicha obtención del conjunto de representaciones comprende: determinar un conjunto de representaciones alternativas; y seleccionar un subconjunto del conjunto de representaciones alternativas, seleccionando de este modo la pluralidad de representaciones alternativas; y en donde el conjunto de representaciones modificado se obtiene seleccionando un subconjunto diferente del conjunto de representaciones alternativas.
Opcionalmente, dicho procesador está configurado adicionalmente para, en respuesta a la determinación de que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido: mostrar la GUI a un usuario; identificar el elemento de GUI en la GUI basándose en la entrada de usuario del usuario; y en donde dicha obtención del conjunto de representaciones modificado comprende determinar un nuevo conjunto de representaciones alternativas que identifican de manera inequívoca el elemento de GUI en la GUI, en donde el conjunto de representaciones modificado comprende el nuevo conjunto de representaciones alternativas.
Opcionalmente, dicha visualización de la GUI comprende mostrar la GUI y marcar un elemento sugerido, en donde la entrada de usuario es una confirmación del elemento sugerido.
Opcionalmente, dicha obtención del conjunto de representaciones comprende aplicar un modelo predictivo para seleccionar la pluralidad de representaciones alternativas para el conjunto de representaciones de un conjunto de representaciones alternativas; en donde el modelo predictivo se entrena basándose en elementos de GUI y representaciones alternativas de los mismos.
Opcionalmente, dicha obtención del conjunto de representaciones modificado comprende aplicar un modelo predictivo para seleccionar una representación alternativa a eliminar del conjunto de representaciones, en donde el modelo predictivo se entrena basándose en datos que comprenden modificaciones manuales a conjuntos de representaciones.
Opcionalmente, el conjunto de representaciones comprende la pluralidad de representaciones alternativas y una o más representaciones alternativas adicionales; en donde dicho procesador está configurado adicionalmente para: obtener un contexto de GUI actual de la GUI; y en donde dicha aplicación del conjunto de representaciones comprende seleccionar la pluralidad de representaciones alternativas basándose en el contexto de GUI y aplicar únicamente la pluralidad de representaciones alternativas sin aplicar la una o más representaciones alternativas adicionales.
Opcionalmente, el conjunto de representaciones comprende un conjunto de representaciones alternativas, en donde el conjunto de representaciones alternativas comprende la pluralidad de representaciones alternativas y al menos una representación alternativa más; y en donde dicha aplicación del conjunto de representaciones comprende determinar un subconjunto del conjunto de representaciones alternativas a aplicar en la GUI, en donde el subconjunto consiste en la pluralidad de representaciones alternativas, por lo que dicha aplicación aplica selectivamente solo una porción de representaciones alternativas disponibles.
Breve descripción de las diversas vistas de los dibujos
La presente materia objeto divulgada se entenderá y apreciará más completamente a partir de la siguiente descripción detallada tomada junto con los dibujos en los que números o caracteres correspondientes o similares indican componentes correspondientes o similares. A menos que se indique lo contrario, los dibujos proporcionan realizaciones o aspectos ilustrativos de la divulgación y no limitan el alcance de la divulgación. En los dibujos:
la Figura 1 muestra una ilustración esquemática de un entorno y arquitectura ilustrativos en los que puede utilizarse la materia objeto divulgada, de acuerdo con algunas realizaciones ilustrativas de la materia objeto divulgada;
las Figuras 2-4 muestran diagramas de diagrama de flujo de métodos, de acuerdo con algunas realizaciones de la materia objeto divulgada;
las Figuras 5A-5E muestran pantallas ilustrativas, de acuerdo con algunas realizaciones de la materia objeto divulgada;
la Figura 6A muestra un diagrama de bloques de un aparato, de acuerdo con algunas realizaciones de la materia objeto divulgada; y
la Figura 6B muestra un diagrama de bloques de un aparato, de acuerdo con algunas realizaciones de la materia objeto divulgada.
Descripción detallada
Un problema técnico tratado por la materia objeto divulgada es representar un elemento de GUI, preferentemente de una manera robusta. En algunas realizaciones ilustrativas, un elemento de GUI puede ser un botón, una etiqueta, una información sobre herramientas, un widget, un campo de entrada, un cuadro de texto o similares. Puede desearse adquirir automáticamente un elemento de GUI en una GUI dada para permitir la ejecución de recorridos, recopilar información para análisis, automatización de procesos, añadir una capa de visualización, aumentar la funcionalidad de la GUI o similares.
Como ejemplo, un tutorial puede ser un tutorial que, cuando se ejecuta, presenta, de manera secuencial, elementos descriptivos relacionados con la GUI, tal como se divulga en la Patente de Estados Unidos 9.922.008, titulada "Calling Scripts Based Tutorials". Los elementos descriptivos pueden incluir instrucciones y/o ejemplos de uso, y pueden asociarse con respectivos elementos de GUI, tal como un objeto de HTML específico dentro de un documento web. Para poder colocar el elemento descriptivo cerca del respectivo elemento de GUI, existe la necesidad de adquirir automáticamente el elemento de GUI. La adquisición del elemento de GUI puede basarse en una representación del mismo. Si, sin embargo, hay un cambio en la GUI, la representación puede no ser robusta, y la adquisición puede fallar.
En algunas realizaciones ilustrativas, un elemento de GUI puede no tener un identificador único en la GUI que sea consistente a lo largo del tiempo. Como un ejemplo, un botón "OK" puede no tener ningún ID asociado con el mismo en el código fuente. Puede haber múltiples botones con el texto "OK". Por lo tanto, puede no ser factible adquirir un botón buscando botones con el texto "OK".
Adicionalmente o como alternativa, puede haber diferentes versiones de una GUI, tal como una página web, cada una de las cuales puede tener un texto diferente. Por lo tanto, el botón con el texto "OK" puede encontrarse buscando la palabra "OK" en la versión en inglés de la página web y puede no encontrarse en otras versiones de la página web, tales como la versión en alemán, la versión en hebreo, la versión china, o similares.
Adicionalmente o como alternativa, el código de la GUI puede ofuscarse dinámicamente. Por ejemplo, una página web puede ofuscarse cada vez que se recupera. Como un ejemplo, un elemento de GUI en una página web puede tener una propiedad de "ID" que es "botón de envío" en el código fuente original. Cada vez que se recupera la página web, un ofuscador puede elegir una propiedad de ID nueva y aleatoria. Intentar adquirir el elemento de GUI basándose en el "botón de envío" de ID puede ser plausible durante la prueba, pero puede fallar en la producción. Adicionalmente o como alternativa, como un ofuscador puede proporcionar un nuevo ID cada vez que se recupera la página, una adquisición satisfactoria puede no proporcionar una pista en cuanto a un ID que puede usarse en futuras adquisiciones.
Otro problema técnico tratado por la materia objeto divulgada es representar de manera robusta un elemento de GUI en un programa que cambia con el tiempo. Un programa puede cambiar con el tiempo como resultado de añadir nuevas características, eliminar características, cambios de diseño, correcciones de errores o similares. Puede desearse encontrar una representación robusta. Tal representación robusta puede ser necesaria para encontrar el mismo elemento a lo largo del tiempo. Como un ejemplo, una aplicación puede tener un botón "Pagar ahora". La aplicación puede cambiar con el tiempo. Por ejemplo, el botón "Pagar ahora" puede cambiar de lugar dentro de la aplicación, el tamaño del botón puede cambiar, el texto puede cambiar o similares. Puede desearse recopilar información de uso automáticamente con respecto a cuántos usuarios han pulsado el botón de pago, cuántos usuarios han completado el pago, cuánto tiempo tardó un usuario en completar la compra, o similares. Tales datos recopilados pueden usarse, por ejemplo, para proporcionar un análisis de embudo útil del programa. Tener una representación del botón de pago puede permitir adquirir el botón de pago en la GUI e identificar interacciones con el mismo. Una representación que no es robusta a lo largo del tiempo puede fallar al permitir la adquisición del mismo botón y, por lo tanto, puede pasar por alto interacciones con el botón de GUI (y potencialmente contabilizar interacciones con un elemento de GUI diferente en su lugar). Por lo tanto, una representación que no es robusta a lo largo del tiempo puede fallar al proporcionar un análisis de uso automático fiable. De manera similar, una representación no robusta puede crear un desafío técnico para la realización automática de interacciones de usuario, tal como se divulga, por ejemplo, en la materia objeto de la Patente de Estados Unidos 9.934.782, titulada "Automatic performance of User Interaction Operations on a Computer Device".
Otro problema técnico más tratado por la materia objeto divulgada es representar de manera robusta un elemento de GUI en un programa que cambia a través de plataformas. Como ejemplo, un programa puede tener una versión nativa para WINDOWS™ y una versión híbrida para dispositivos móviles. Puede ser deseable representar de manera robusta un elemento de GUI de una manera que permita la adquisición del elemento de GUI a través de las diferentes versiones.
Una solución técnica es obtener una GUI de un programa, tal como una pantalla, un formulario, un documento web, un diseño ANDROID™, objeto de playground de iOS™ o similar. La GUI del programa puede comprender una pluralidad de elementos de GUI, incluyendo un elemento de GUI de interés. Se determina un conjunto de representaciones del elemento de GUI y se usa como una representación robusta del mismo. El conjunto de representaciones comprende una pluralidad de representaciones alternativas. En algunas realizaciones, el conjunto de representaciones puede aplicarse en la pantalla, donde ha de adquirirse el elemento de GUI. En algunas realizaciones, el conjunto de representaciones se aplica aplicando independientemente cada una de las representaciones alternativas. En algunas realizaciones, cada una de las representaciones alternativas es suficiente para identificar de manera inequívoca el elemento de GUI. Se considera que el conjunto de representaciones proporciona un resultado definitivo si los resultados de las representaciones alternativas están de acuerdo e identifican un único elemento en la pantalla. En caso de que la aplicación del conjunto de representaciones proporcione un resultado indefinido, se modifica el conjunto de representaciones. El conjunto de representaciones modificado es una modificación que identifica de manera inequívoca el elemento de GUI en la pantalla. El conjunto de representaciones modificado es útil para adquirir el elemento de GUI en la pantalla.
En algunas realizaciones, una representación alternativa usa un atributo del elemento de GUI para identificar el elemento de GUI. El atributo puede ser un identificador del elemento, un texto asociado con el elemento, el color del elemento o similares. Adicionalmente o como alternativa, una representación alternativa usa una trayectoria absoluta al elemento de GUI en una jerarquía de elementos de GUI en la pantalla. En algunas realizaciones, un elemento de GUI puede comprender uno o más elementos de sub-GUI. Los elementos de GUI pueden representarse en un gráfico acíclico dirigido (DAG), un árbol u otra forma de un gráfico. La GUI puede comprender un elemento raíz, y una trayectoria desde el elemento raíz al elemento de GUI puede considerarse como una trayectoria absoluta al mismo. Adicionalmente o como alternativa, una representación alternativa puede usar una trayectoria relativa desde un elemento de GUI de origen al elemento de GUI de destino. Una trayectoria relativa a un elemento de GUI puede ser la trayectoria desde un elemento de GUI de origen al elemento de GUI de destino. Como un ejemplo, en sitios web puede haber un elemento de GUI con la etiqueta 'HTML', que es el elemento raíz, desde el que son accesibles todos los otros elementos de GUI. Como un ejemplo, con referencia a la pantalla 500a ilustrada en la Figura 5A. El menú 501a puede ser un elemento de GUI que comprende cuentas 502a, así como otros elementos. Una trayectoria relativa desde el menú 501a a las cuentas 502a puede ser "el 5° hijo del menú 501a". Tal representación puede permitir adquirir las cuentas de elemento de GUI 502a, basándose en una adquisición del menú 501a. Adicionalmente o como alternativa, una trayectoria absoluta puede en la pantalla 500a a las cuentas 502a, puede ser "el 1er elemento que es un menú ^ el 5° elemento del menú", suponiendo que el menú 501a es el primer elemento en la pantalla 500a que se caracteriza por ser un menú. En algunas realizaciones, la representación alternativa usa uno o más atributos de uno o más otros elementos de GUI para representar el elemento de GUI. Por ejemplo, una representación alternativa puede usar una consulta para identificar otros elementos o estructuras, y seleccionar el elemento de GUI entre los mismos basándose en una propiedad, tal como propiedad estructural, atributo del elemento, o similares. Como un ejemplo, una representación alternativa puede ser "encontrar un elemento que es la raíz más profunda de subárbol que contiene elementos con atributos <A1> y <A2>". En este ejemplo, pueden identificarse todos los subárboles que contienen un elemento con atributo <A1> y un elemento con atributo <A2> (que puede ser el mismo elemento o un elemento diferente). Puede examinarse cada raíz de tales subárboles, y puede seleccionarse el nodo que funciona como una raíz de tal subárbol y tiene una distancia mayor desde la raíz del árbol que representa la GUI.
En algunas realizaciones ilustrativas, un Modelo de Objeto de Documento (DOM) puede proporcionar una representación de estructura de árbol para una GUI, tal como una GUI basada en un documento<h>T<m>L, un XHTML o un XML. En la estructura de árbol lógica del DOM, cada nodo puede ser un objeto que representa una parte del documento. El DOM puede utilizarse para atravesar una trayectoria deseada en la GUI.
El conjunto de representaciones comprende una pluralidad de representaciones alternativas. La modificación del conjunto de representaciones comprende eliminar del mismo una o más representaciones alternativas. Adicionalmente, el conjunto de representaciones modificado puede determinarse seleccionando un subconjunto de la pluralidad de representaciones alternativas.
En algunas realizaciones, el conjunto de representaciones modificado se determina eliminando una primera representación alternativa del conjunto de representaciones. Adicionalmente o como alternativa, el conjunto de representaciones modificado se determina añadiendo una segunda representación alternativa al conjunto de representaciones, diferente de la primera representación alternativa. En algunas realizaciones, la segunda representación alternativa se caracteriza por que identifica de manera inequívoca el elemento de GUI.
Aplicar el conjunto de representaciones modificado en la GUI del programa proporciona un resultado definitivo. Adicionalmente, aplicar el conjunto de representaciones modificado identifica de manera inequívoca el elemento de GUI.
Otra solución técnica es aplicar el conjunto de representaciones en un dispositivo cliente de un usuario final. El usuario final puede usar un navegador que se ejecuta en el dispositivo de cliente, una aplicación que se ejecuta en el dispositivo de cliente o similares. En algunas realizaciones ilustrativas, un agente que se ejecuta en el dispositivo de cliente obtiene un conjunto de representaciones. Adicionalmente o como alternativa, el agente aplica la representación establecida en pantalla que está siendo observada actualmente por el usuario final. El agente está utilizando el conjunto de representaciones para adquirir el elemento de GUI para realizar un proceso predeterminado. El agente determina que aplicar el conjunto de representaciones proporcionó un resultado indefinido. En respuesta a la determinación de que aplicar el conjunto de representaciones proporcionó un resultado indefinido, el agente comunica la información a un servidor. El servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado. En algunas realizaciones, el agente obtiene el conjunto de representaciones modificado del servidor para usos futuros. En algunas realizaciones, el servidor distribuye, de una manera de inserción o extracción, el conjunto de representaciones modificado a una pluralidad de agentes que están configurados para adquirir el elemento de GUI.
En algunas realizaciones ilustrativas, el servidor almacena la información recibida de los agentes. La información se usa por un algoritmo de aprendizaje automático. El algoritmo de aprendizaje automático está configurado para clasificar representaciones alternativas con el fin de hacer coincidir representaciones alternativas con elementos de GUI.
Otra solución técnica es aplicar el conjunto de representaciones una pluralidad de veces, cada una de las cuales con respecto a una pantalla diferente. Las diferentes pantallas se recuperan de una base de datos histórica. La base de datos histórica retiene pantallas previamente encontradas por agentes informatizados, tales como rastreadores, guiones, productos de software, bots, clientes operados por usuario o similares. En algunas realizaciones, el agente es un cliente operado por el usuario, donde el usuario da instrucciones al cliente para guardar una pantalla específica encontrada por el usuario en una sesión. Un agente se ejecuta en un dispositivo de cliente y comunica la información a un servidor. El servidor almacena la información para usar la información de acuerdo con la materia objeto divulgada.
En algunas realizaciones, en respuesta a la determinación de que aplicar el conjunto de representaciones proporcionó un resultado indefinido, la GUI se muestra a un usuario.Enalgunas realizaciones, el usuario puede ser un usuario administrativo, diferente del usuario final que usa el dispositivo en el que el conjunto de representaciones no pudo proporcionar un resultado definitivo. El usuario identifica el elemento de GUI en la GUI, selecciona el elemento de GUI en la GUI, marca el elemento de GUI en la GUI o similares. En algunas realizaciones, en caso de que el resultado indefinido comprenda más de un elemento de GUI, los elementos de GUI identificados por el conjunto de representaciones se visualizan a un usuario. El usuario selecciona un elemento de GUI entre los mismos. Adicionalmente o como alternativa, un proceso informatizado selecciona automáticamente un candidato superior de entre los más de un elemento de GUI, y permite que el usuario verifique la selección automática. El servidor almacena la selección del usuario y modifica el conjunto de representaciones basándose en la misma.
En algunas realizaciones ilustrativas, las selecciones de usuarios se registran y se guardan para un uso futuro. Como un ejemplo, la selección del usuario puede usarse como partes de datos para un algoritmo de aprendizaje de máquina supervisado.
En algunas realizaciones, determinar el conjunto de representaciones comprende aplicar una salida de un modelo predictivo. El modelo predictivo es la salida de un algoritmo de aprendizaje automático configurado para recibir como entrada representaciones alternativas, pantallas, elementos de GUI, contextos de GUI o similares.
Un efecto técnico de utilizar la materia objeto divulgada es una adquisición robusta de un elemento de GUI. En algunas realizaciones, la adquisición se logra automáticamente por un agente. El agente está configurado para realizar un proceso útil usando el elemento adquirido, tal como visualizar y ejecutar un recorrido, proporcionar una visualización aumentada a través de la GUI, analizar las acciones del usuario o usuarios, ejecutar automatización de prueba, o similares. La adquisición robusta se realiza con respecto a diferentes versiones del programa, diferente versión de la GUI, o similares, sin requerir intervención o asistencia manual.
Otro efecto técnico de utilizar la materia objeto divulgada es determinar una representación robusta de un elemento de GUI. La representación robusta comprende una pluralidad de representaciones no robustas. En alguna realización, la materia objeto divulgada se usa para elegir un conjunto de representaciones que comprende un subconjunto de representaciones alternativas. Una GUI de un programa puede cambiar con el tiempo debido a cambios en versiones, en UX, en funcionalidad del programa o similares. Utilizar la materia objeto divulgada permite adquirir un elemento de GUI en la GUI, incluso si la GUI hubiera cambiado de la GUI que estaba disponible cuando se definió la representación. En algunas realizaciones, puede cambiar un elemento de GUI, puede cambiar una GUI de un programa que comprende el elemento de GUI, o similares. Como un ejemplo, un elemento de GUI puede adquirirse usando un texto que está asociado con el elemento de GUI. El elemento de GUI puede ser un botón que comprende el texto "Me gusta". Una nueva versión de la GUI de un programa puede cambiar el texto a otro idioma, a un icono o similar. La materia objeto divulgada puede proporcionar un método para adquirir el elemento de GUI independientemente de tales cambios.
Otro efecto técnico más de utilizar la materia objeto divulgada es posibilitar procesos de automatización de programas, tales como la ejecución de procesos de negocio usando la GUI sin usar Interfaces de Programación de Aplicación (API) especializadas, automatización de pruebas o similares. La adquisición robusta de elementos de GUI permite que el proceso de automatización funcione correctamente y, por lo tanto, reduce los recursos requeridos para la re ejecución después de la inspección manual de error.
Otro efecto técnico más de utilizar la materia objeto divulgada es permitir la mejora de la GUI, tal como aumentar la funcionalidad de la misma, proporcionar recorridos adaptables a la misma, añadir capa de visualización sobre la GUI, recopilar estadísticas de uso o similares. La mejora de GUI requiere la adquisición automática de elementos de GUI. La materia objeto divulgada proporciona una adquisición robusta, que permite que las mejoras de la GUI funcionen correctamente a lo largo del tiempo, a pesar de los cambios en la GUI.
Otro efecto técnico más de utilizar la materia objeto divulgada es una mejora del consumo de recursos en el proceso de utilización de una representación de elementos de GUI. La materia objeto divulgada proporciona una representación robusta que es duradera a lo largo del tiempo y evita la necesidad de redefinir una representación con cada modificación de la GUI, o para cada versión alternativa de la GUI, tal como en el caso de diferentes lenguajes, diferentes plataformas o similares.
Otro efecto técnico más de utilizar la materia objeto divulgada es permitir la modificación automática de una representación de GUI, sin intervención del usuario. Usando técnicas de aprendizaje automático, la materia objeto divulgada define el conjunto de representaciones automáticamente. Adicionalmente o como alternativa, incluso cuando el conjunto de representaciones proporciona un resultado indefinido, la materia objeto divulgada proporciona una manera automatizada de corregir el conjunto de representaciones para proporcionar un resultado definitivo y adquirir el elemento de GUI objetivo correctamente.
Otro efecto técnico más de utilizar la materia objeto divulgada es consumir recursos computacionales en el agente, para fines de robustez. En lugar de utilizar una única representación para adquirir el elemento de GUI, se usan una pluralidad de representaciones alternativas e independientes y, por lo tanto, consumen recursos computacionales. En algunas realizaciones ilustrativas, el número de representaciones alternativas se determina como un equilibrio entre robustez máxima (por ejemplo, cualquier representación potencial) y entre mejor rendimiento (por ejemplo, una representación).
La materia objeto divulgada puede proporcionar una o más mejoras técnicas sobre cualquier técnica preexistente y cualquier técnica que se haya vuelto rutinaria o convencional previamente en la técnica. El problema técnico adicional, la solución y los efectos pueden ser evidentes para un experto en la materia en vista de la presente divulgación.
Haciendo referencia ahora a la Figura 1 que muestra un entorno, de acuerdo con algunas realizaciones de la materia objeto divulgada.
El entorno 100 puede comprender una pluralidad de dispositivos de cliente 110. Los dispositivos de cliente 110 pueden ser ordenadores personales (PC), tabletas, teléfonos inteligentes o similares. Los dispositivos de cliente 110 pueden conectarse a una red informatizada 105, tal como una red de área extensa (WAN), una red de área local (LAN), una red inalámbrica, Internet, una intranet o similares.
El entorno 100 puede comprender el servidor 120, que puede estar conectado a la red informatizada 105. Adicionalmente o como alternativa, el ordenador de administrador 130, operado por el administrador 140 u otro usuario con credenciales y permisos adecuados, puede conectarse a la red informatizada 105. En algunas realizaciones ilustrativas, el servidor 120 y el ordenador de administrador 130 pueden conectarse entre sí directamente, indirectamente, tal como a través de la red informatizada 105, o similares. En algunas realizaciones ilustrativas, el servidor 120 y el ordenador de administrador 130 pueden implementarse por el mismo dispositivo físico.
En algunas realizaciones, un Agente 115 se está ejecutando en un Dispositivo de Cliente 110. En algunas realizaciones, cada Dispositivo de Cliente 110 puede ejecutar un Agente 115 correspondiente. Adicionalmente o como alternativa, únicamente una porción de los Dispositivos de Cliente 110 puede ejecutar un Agente 115. El agente 115 es un producto de programa ejecutable por un ordenador, tal como, sin limitaciones, un script, un software, una extensión de navegador, una aplicación móvil, una aplicación web, un kit de desarrollo de software (SDK), una biblioteca compartida, una biblioteca de enlace dinámico (DLL) o similares.
El dispositivo cliente 110 está configurado para ejecutar un programa que tiene una GUI. El programa puede ser, por ejemplo, una página web, una aplicación web, una extensión de navegador, una aplicación móvil, aplicación de escritorio o similares. El programa visualiza a un usuario final una o más pantallas, que constituyen la GUI, que comprenden elementos de GUI.
En algunas realizaciones, el Agente 115 está configurado para adquirir un elemento de GUI que aparece en la GUI. Por ejemplo, el Agente 115 puede adquirir un botón interactivo específico, un elemento de texto, una información sobre herramientas o similares. La adquisición de elementos de GUI se realiza para que el Agente 115 implemente una funcionalidad deseada. En algunas realizaciones ilustrativas, el agente 115 rastrea la actividad de usuario con respecto al programa y, en particular, supervisa estadísticas de uso relacionadas con el elemento de GUI. Adicionalmente o como alternativa, el Agente 115 implementa automatización basada en GUI, interactuando automáticamente con la GUI en nombre del usuario final, imitando la entrada de usuario. Adicionalmente o como alternativa, el Agente 115 puede implementar manipulación de GUI, tal como modificar la GUI, eliminar elementos de GUI existentes, añadir nuevos elementos de<g>U<i>o similares. Adicionalmente o como alternativa, el Agente 115 puede implementar un recorrido, en el que los elementos del recorrido pueden visualizarse en una ubicación adyacente a elementos de GUI, proporcionar una solicitud de acciones para el usuario final, en relación con los elementos de GUI mostrados en la GUI, o similares.
En algunas realizaciones, el Agente 115 está configurado para obtener un conjunto de representaciones del elemento de GUI. El agente 115 aplica el conjunto de representaciones en la GUI, para adquirir el elemento de GUI en la GUI. El conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en la GUI. Para aplicar el conjunto de representaciones, el Agente 115 está configurado para aplicar cada una de las representaciones alternativas de una manera separada.
En algunas realizaciones, aplicar el conjunto de representaciones falla al identificar cualquier elemento de GUI en la GUI. Adicionalmente o como alternativa, aplicar el conjunto de representaciones proporciona resultados indefinidos debido a identificar un primer elemento de GUI usando una primera representación alternativa e identificar un segundo elemento de GUI usando una segunda representación alternativa, en donde el primer elemento de GUI y el segundo elemento de GUI son diferentes. Adicionalmente o como alternativa, aplicar el conjunto de representaciones proporciona resultados indefinidos debido a la identificación de dos o más elementos de GUI usando una representación alternativa.
Como un ejemplo, puede desearse adquirir un botón "nuevo" que aparece en la GUI y relacionado con la composición de un nuevo correo electrónico, que aparece en el contenedor de correo electrónico. En algunas realizaciones ilustrativas, una representación que puede usarse para adquirir el elemento de GUI, puede ser buscar un elemento que tenga las propiedades "Tipo=Botón" y "Etiqueta=nuevo". Otra representación alternativa puede ser un elemento que tiene las propiedades "Tipo=Botón" y "Padre=Contenedor de Correo Electrónico". El conjunto de representaciones puede comprender ambas representaciones alternativas, cada una de las cuales puede ser suficiente para identificar el elemento de GUI. Sin embargo, en algunas realizaciones ilustrativas, la GUI puede comprender una pluralidad de contenedores, tal como contenedor de correo electrónico, contenedor de contacto, contenedor de evento o similares, cada uno de los cuales puede comprender un botón "nuevo". Como resultado, la primera representación alternativa puede proporcionar tres elementos de GUI diferentes cuando se aplica en la GUI, ya que puede haber tres elementos diferentes que coinciden con las propiedades definidas de este modo. La segunda representación alternativa aún puede proporcionar un resultado único: el elemento de GUI. Tal discrepancia puede considerarse como el conjunto de representaciones que proporciona un resultado indefinido.
Tras determinar que aplicar el conjunto de representaciones proporciona un resultado indefinido, el Agente 115 está configurado para comunicar la información al Servidor 120. El servidor 120 está configurado para obtener tal información y proporcionar un conjunto de representaciones modificado.
En algunas realizaciones ilustrativas, aplicar una representación alternativa puede no proporcionar un resultado, puede proporcionar un resultado vacío o similares. Se observa que tal representación alternativa puede ser correcta. Como un ejemplo, una característica puede estar disponible en un Sistema Operativo (OS) y no disponible en otro. Una primera versión de la GUI puede haber sido idéntica para dos OS diferentes. La característica puede representarse usando un botón. La primera versión de la GUI puede comprender el botón en todos los OS. Una segunda versión de la GUI puede ser específica de OS y puede incluir el botón para un OS y no incluir el botón para otro OS. Aplicar la representación alternativa en la primera versión de la GUI puede proporcionar el botón independientemente de qué OS se obtuvo la GUI. Aplicar la representación alternativa en la segunda versión de la GUI puede proporcionar el botón cuando la GUI se obtiene de un primer OS. Adicionalmente o como alternativa, aplicar la representación alternativa en la GUI que se obtuvo de un segundo OS puede no proporcionar un resultado, ya que el elemento de GUI está de hecho ausente de esa GUI.
En algunas realizaciones ilustrativas, el servidor 120 retiene las GUI. En algunas realizaciones, los agentes 115 están configurados para transmitir al servidor 120 las GUI encontradas de este modo. En algunas realizaciones, se transmite cada GUI encontrada. Adicionalmente o como alternativa, únicamente se transmiten las GUI donde el conjunto de representaciones proporciona un resultado indefinido. En algunas realizaciones, una GUI que se retiene es una representación digital de la GUI mostrada, tal como un documento de Lenguaje de Marcado de Hipertexto (HTML), una imagen de captura de pantalla, un documento de Lenguaje de Marcado Extensible (XML) que representa los elementos de la<g>U<i>y sus propiedades, un archivo de módulo de objeto de documento (DOM), diseño ANDROID™ o cualquier otra representación digital de la GUI.
En algunas realizaciones, el servidor 120 está configurado para definir un conjunto de representaciones modificado. En algunas realizaciones, el conjunto de representaciones modificado se define automáticamente, manualmente o similar. El conjunto de representaciones modificado se define usando un conjunto diferente de representaciones alternativas. En algunas realizaciones, el conjunto de representaciones modificado se determina en vista de la información obtenida de un agente 115 o una pluralidad de agentes 115. En algunas realizaciones, el conjunto de representaciones modificado se transmite por el servidor 120 a los agentes 115. En algunas realizaciones, el servidor 120 difunde el conjunto de representaciones modificado tras su generación. Adicionalmente o como alternativa, el servidor 120 transmite a cada agente 115 el conjunto de representaciones modificado, en respuesta a una consulta de ese agente.
El entorno 100 comprende el ordenador de administrador 130 y el usuario 140 que puede ser un operador, un supervisor, un administrador o similares. En algunas realizaciones, en respuesta a la determinación de que aplicar el conjunto de representaciones proporciona un resultado indefinido, la información se comunica al ordenador de administrador 130. El ordenador de administrador 130 está configurado para visualizar la información al administrador 140. Adicionalmente o como alternativa, el ordenador de administrador 130 está configurado para visualizar al administrador 140 la GUI, según se captura por el agente en el que el conjunto de representaciones proporcionó el resultado indefinido. El usuario 140 hace una selección del elemento de GUI en la GUI mostrada. En respuesta a obtener del Administrador 140 una selección del elemento de GUI en la GUI, se determina el conjunto de representaciones modificado. En algunas realizaciones, el conjunto de representaciones modificado comprende representaciones alternativas, en donde cada una de las representaciones alternativas identifica de manera inequívoca el elemento de GUI seleccionado. En algunas realizaciones, las representaciones alternativas se seleccionan de un conjunto de representaciones alternativas potenciales, tal como las retenidas por el servidor 120 o generadas por el mismo.
Adicionalmente o como alternativa, el ordenador de administrador 130 está configurado para visualizar al administrador 140, la GUI original, basándose en la que se determinó el conjunto de representaciones, con una indicación visual del elemento de GUI, como se identifica por el conjunto de representaciones. La pantalla incluye adicionalmente la GUI actual, en la que el conjunto de representaciones proporcionó un resultado indefinido. En algunas realizaciones ilustrativas, el mostrador muestra la GUI original y la<g>U<i>actual de una manera una al lado de la otra, posibilitando que el administrador 140 visualice visualmente ambas GUI al mismo tiempo, compararlas e identificar la correlación entre los elementos de las mismas. Adicionalmente o como alternativa, la pantalla comprende una indicación visual de una estimación del elemento de GUI. La estimación se determina, por ejemplo, basándose en una mayoría de las representaciones alternativas que proporcionan un candidato potencial. Adicionalmente o como alternativa, cada representación alternativa puede asociarse con un peso y basándose en los pesos, puede calcularse una puntuación para cada candidato, posibilitando una selección de un candidato con la puntuación más alta. Adicionalmente o como alternativa, se utiliza un modelo de predicción para determinar una selección predicha basándose en los candidatos. En algunas realizaciones ilustrativas, la pantalla puede estar centrada en el elemento de GUI estimado. El administrador 140 verifica si la estimación del elemento de GUI es correcta o, como alternativa, indica que es incorrecta. En algunas realizaciones, en respuesta a una indicación de una estimación incorrecta, se muestra una siguiente mejor estimación, y así sucesivamente. Adicionalmente o como alternativa, tras visualizar el siguiente candidato estimado, la visualización puede volver a centrarse en el siguiente candidato estimado. Adicionalmente o como alternativa, el administrador 140 selecciona manualmente el elemento de GUI de una manera explícita. En algunas realizaciones ilustrativas, la entrada de usuario se usa por un algoritmo de aprendizaje de máquina, tal como aprendizaje supervisado, aprendizaje semi-supervisado, aprendizaje no supervisado, o similares, para proporcionar un modelo predictivo capaz de sustituir a un usuario humano por un clasificador automatizado.
En algunas realizaciones, el agente 115 está configurado para obtener el conjunto de representaciones modificado y utilizarlo como el conjunto de representaciones para adquirir el elemento de GUI. En algunas realizaciones, el Agente 115 aplica los conjuntos de representaciones modificados en la GUI actual o en GUI adicionales.
En algunas realizaciones ilustrativas, los intentos de aplicar el conjunto de representaciones pueden retenerse y usarse por un algoritmo de aprendizaje automático, para permitir una selección mejorada de representaciones alternativas a usarse como parte del conjunto de representaciones. La selección mejorada puede tener en cuenta propiedades del elemento de GUI, examinándose las propiedades de la representación alternativa y usar un modelo predictivo para estimar la robustez de la representación alternativa examinada a lo largo del tiempo. Adicionalmente o como alternativa, la selección mejorada puede tener en cuenta otras representaciones alternativas que identifican de manera inequívoca el elemento de GUI como parte de las características usadas para estimar la robustez de la representación alternativa. Adicionalmente o como alternativa, la selección mejorada puede tener en cuenta otras representaciones alternativas que proporcionaron resultados indefinidos (de tipo específico, o en general), representaciones alternativas que se exhibieron como no robustas (por ejemplo, inicialmente proporcionaron una identificación única y posteriormente proporcionaron una identificación no única), o similares. Adicionalmente o como alternativa, la selección mejorada puede tener en cuenta contexto de GUI, propiedades de la GUI o similares.
En algunas realizaciones, una GUI está asociada con un contexto de GUI. El contexto de GUI comprende propiedades relacionadas con la GUI, con el usuario que usa la GUI, con el dispositivo que se usa para ejecutar la GUI con el estado de conectividad del dispositivo, o similares. Como un ejemplo, el contexto de GUI puede comprender un Sistema Operativo (OS) del dispositivo que se está usando. Como otro ejemplo, el contexto de GUI puede comprender una configuración regional del dispositivo, tal como ajustes de idioma, ubicación regional, zonas horarias o similares. Como otro ejemplo más, el contexto de GUI puede comprender un identificador de la GUI, tal como un Identificador de Recursos Unificado (URI), un nombre de pantalla o similares. Como otro ejemplo más, el contexto de GUI puede comprender propiedades del usuario que ha iniciado sesión, tales como permisos, configuraciones, roles o similares. Como otro ejemplo más, el contexto de GUI puede comprender propiedades de hardware del dispositivo, tales como tamaño de pantalla, orientación, resolución, conectividad de red o similares. En algunas realizaciones ilustrativas, un primer Agente 115, que se ejecuta en un primer Dispositivo de Cliente 110, puede identificar de manera inequívoca un elemento de GUI, mientras que un segundo Agente 115, que se ejecuta en un segundo Dispositivo de Cliente 110, puede proporcionar un resultado indefinido para la misma GUl, debido a una diferencia en el contexto de la GUI.
Haciendo referencia ahora a la Figura 2 que muestra un diagrama de flujo de un método, de acuerdo con algunas realizaciones de la materia objeto divulgada.
En la etapa 200, se obtiene una selección del elemento de GUl. En algunas realizaciones, un usuario puede seleccionar un elemento de GUl de una GUl, también denominado como una pantalla, para usarse como parte de un proceso de automatización, de un recorrido o similar. Adicionalmente o como alternativa, la selección puede realizarse automáticamente, en relación con elementos de interés, tales como elementos para los que pueden rastrearse mediciones de rendimiento. En algunas realizaciones ilustrativas, el elemento de GUl seleccionado puede ser un elemento de GUl que puede adquirirse en el futuro, tal como cuando se invoca el programa que tiene la GUl. En algunas realizaciones, la selección puede representarse en una forma digital, tal como usando un puntero al elemento de GUl seleccionado en una aplicación, un identificador del elemento de GUl seleccionado en una página web, o similares. La GUI es parte de un programa, tal como una aplicación móvil, una aplicación web, un software de escritorio o similares. Adicionalmente o como alternativa, la GUI es una pantalla previamente presentada por un programa y retenida en una base de datos.
Como ejemplo, en algunas situaciones, cuando se representa, la GUI de un programa puede ser la página de inicio de Google™. El elemento de GUI puede ser el área de búsqueda en la que los usuarios pueden escribir un texto. El área de búsqueda puede obtenerse buscando "ID div=searchBox". Como otro ejemplo, la GUI puede ser una pantalla en un aplicación móvil de búsqueda de Google™, en lugar de una aplicación web. La pantalla puede comprender un elemento de GUI tal como un cuadro de búsqueda, que puede identificarse como "android:ID="searchBox"".
En la etapa 210, se determina un conjunto de representaciones del elemento de GUI. El conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en la GUI de un programa.
Haciendo referencia de nuevo al ejemplo anterior, el cuadro de búsqueda puede tener representaciones alternativas que pueden usarse para identificar el elemento de GUI seleccionado, tal como "ID div=searchBox", "elemento de GUI con el texto 'Buscar en Google o escribir una URL'", "el 7° div en la página", o similares.
En la etapa 220, se obtiene una GUI de una base de datos histórica. En algunas realizaciones, la base de datos histórica retiene GUI, tales como pantallas previamente encontradas por agentes informatizados, tales como rastreadores web, Agentes 115 de la Figura 1, pantallas guardadas o archivadas manualmente por usuarios, o similares. En algunas realizaciones ilustrativas, la GUI obtenida de la base de datos histórica puede ser una versión diferente de la GUI de la que se seleccionó el elemento de GUI. Adicionalmente o como alternativa, la GUI histórica puede comprender el elemento de GUI y como resultado, el elemento de GUI puede adquirirse en la misma. En algunas realizaciones, la GUI histórica puede tener el mismo contexto de GUI que la GUI desde la que se seleccionó el elemento de GUI o tener una propiedad común compartida entre las mismas. Como un ejemplo, si el elemento de GUI se seleccionó de una página web que tiene un localizador de recursos unificado (URL), pueden obtenerse GUI históricas de páginas web que tienen el mismo URL en la etapa 220. Como otro ejemplo, las GUI históricas pueden ser pantallas que tienen el mismo identificador que la GUI de la que se seleccionó el elemento de GUI.
En la etapa 230, el conjunto de representaciones se aplica en la GUI obtenida en la etapa 220. Aplicar el conjunto de representaciones comprende aplicar cada una de las representaciones alternativas comprendidas por el conjunto de representaciones. Los resultados de dicha aplicación de cada una de las representaciones alternativas se retienen y se comparan entre sí.
En algunas realizaciones, algunas representaciones alternativas están asociadas con un contexto de GUI. Como un ejemplo, el contexto de GUI comprende una propiedad que describe el OS desde el que se obtuvo la GUI. La propiedad puede ser "OS=ANDROID™", "OS=WINDOWS", o similares. Dicha aplicación del conjunto de representaciones comprende seleccionar un subconjunto de las representaciones alternativas basándose en el contexto de GUI y aplicar únicamente el subconjunto, con el fin de identificar de manera inequívoca el elemento de GUI. Haciendo referencia de nuevo al ejemplo anterior, la página de inicio de Google™ puede mostrarse de manera diferente para los teléfonos inteligentes de ANDROID™. Como ejemplo, el cuadro de búsqueda puede colocarse en el 8° div y el ID puede ser "searchBox_android". Aplicar la representación alternativa "ID div=searchBox" en la página web actualizada, puede no proporcionar ningún elemento de GUI cuando el contexto de GUI comprende OS=ANDROID. Adicionalmente o como alternativa, la representación alternativa "el 7° div en la página" puede proporcionar un elemento de GUI diferente que el cuadro de búsqueda, y no debería usarse cuando el contexto de<g>U<i>comprende OS=ANDROID. En algunos casos, para OS=ANDROID, pueden estar disponibles diferentes representaciones alternativas, tales como "el 8° div en la página", "ID div=searchBox_android", o similares. Además, la representación alternativa "elemento de GUI con el texto 'Buscar en Google o escribir un URL'" puede ser aplicable a todos los sistemas operativos e indiferente a la propiedad de tipo de OS en el contexto de GUI. Como resultado, esta representación alternativa puede aplicarse tanto para contexto de GUI de OS=ANDROID como para contexto de GUI de OS=WINDOWS.
En la etapa 240, se determina si aplicar la representación establecida en la etapa 230 proporcionó un resultado indefinido. En algunas realizaciones, el conjunto de representaciones comprende dos representaciones alternativas diferentes: una primera y una segunda representación alternativa. Cada una de las diferentes representaciones alternativas proporciona una identificación única de un elemento de GUI diferente. Adicionalmente o como alternativa, un resultado indefinido se debe a una única representación alternativa que identifica dos elementos de GUI diferentes, que no proporciona ningún elemento de GUI, o similares.
En algunas realizaciones ilustrativas, en caso de que el conjunto de representaciones proporcione un resultado definitivo usando la GUI obtenida en la etapa 220, se obtienen versiones adicionales de la GUI y el conjunto de representaciones se aplica en las mismas en las etapas 220-240.
En caso de que el conjunto de representaciones proporcione un resultado indefinido (240), se realiza la etapa 250. En la etapa 250, se modifica el conjunto de representaciones. En algunas realizaciones, la modificación del conjunto de representaciones se realiza para mejorar el conjunto de representaciones. Adicionalmente o como alternativa, la modificación está dirigida a crear una representación más robusta que proporcionaría resultados definitivos en diferentes versiones de la GUI.
En la etapa 260, se elimina una representación alternativa del conjunto de representaciones. Un conjunto de representaciones comprende una pluralidad de representaciones alternativas. La aplicación del conjunto de representaciones proporciona un resultado indefinido debido a una primera representación alternativa. La primera representación alternativa se elimina del conjunto de representaciones. El conjunto de representaciones modificado comprende las representaciones alternativas sin la primera representación alternativa. Volver a aplicar el conjunto de representaciones modificado en una GUI del programa proporciona un resultado definitivo.
Haciendo referencia de nuevo al ejemplo que comprende la página de inicio de Google™, un conjunto de representaciones que comprende las representaciones alternativas "ID div=searchBox", "elemento de GUI con el texto "Buscar en Google o escribir una URL"", "el 10mo div en la página"; puede proporcionar un resultado indefinido. Eliminar la representación alternativa "el 10mo div en la página" puede producir un conjunto de representaciones modificado. Volver a aplicar el conjunto de representaciones modificado en una GUI del programa proporciona un resultado definitivo. El resultado puede ser el cuadro de búsqueda en la página web.
En la etapa 270, se añade otra representación alternativa al conjunto de representaciones modificado. La otra representación alternativa es una representación que, cuando se aplica en la pantalla de la etapa 220, proporcionaría un resultado definitivo, consistente con las otras representaciones alternativas del conjunto de representaciones modificado. En algunas realizaciones, la otra representación alternativa se añade en respuesta a la determinación de que el número de representaciones alternativas en el conjunto de representaciones modificado está por debajo de un número umbral mínimo, tal como por debajo de cinco, por debajo de diez o similares.
En algunas realizaciones, se almacena una pantalla original. La pantalla original es una pantalla que comprende el elemento de GUI original. La pantalla original es la pantalla usada cuando se determinó originalmente el conjunto de representaciones para el elemento de GUI. En algunas realizaciones ilustrativas, la otra representación alternativa se añade únicamente si la otra representación alternativa también identifica el elemento de GUI en la pantalla original. Tal restricción puede ser útil para garantizar que la representación alternativa recién añadida que se añade al conjunto de representaciones, no conduciría a un resultado indefinido, si el conjunto de representaciones modificado se aplicara en la pantalla original. En algunas realizaciones ilustrativas, la pantalla original puede ser una pantalla histórica, que ya no es relevante. En algunos casos, la pantalla original puede reemplazarse por otra pantalla histórica, tal como después de un lanzamiento principal, modificaciones provocadas por una actualización del sistema operativo o similares. La pantalla que reemplaza la pantalla original puede usarse en lugar de la pantalla original para garantizar la robustez de la otra representación alternativa.
En algunas realizaciones ilustrativas, pueden repetirse las etapas 220-250, usando el conjunto de representaciones modificado, determinado en la etapa 250. El conjunto de representaciones modificado puede aplicarse en otras versiones de la pantalla, como se retiene en la base de datos de historial. En algunas realizaciones ilustrativas, pueden procesarse pantallas aún no analizadas en las etapas 220-240. Adicionalmente o como alternativa, las pantallas que se analizaron usando el conjunto de representaciones anterior, que se modificó debido a una determinación de resultados indefinidos en la etapa 240, también pueden reprocesarse, para garantizar que el conjunto de representaciones modificado produzca resultados definitivos con respecto a los mismos. En algunos casos, las pantallas que se reprocesan pueden reprocesarse después de procesar pantallas que no se procesaron previamente.
Haciendo referencia ahora a la Figura 3 que muestra un diagrama de flujo de un método, de acuerdo con algunas realizaciones de la materia objeto desvelada.
En la etapa 302, un servidor determina un conjunto de representaciones. La determinación es similar a la etapa 210 de la Figura 2. En algunas realizaciones, el servidor determina el conjunto de representaciones a usar para adquirir un elemento de GUI, tal como seleccionado por un usuario, para realizar, en el futuro, una acción por un dispositivo de cliente.
En la etapa 306, el servidor difunde el conjunto de representaciones a una pluralidad de dispositivos de cliente. En algunas realizaciones, el servidor transmite el conjunto de representaciones a cada uno de los agentes de cliente, tal como los agentes 115 de la Figura 1. Adicionalmente o como alternativa, el servidor almacena el conjunto de representaciones en un almacenamiento de datos, accesible para los dispositivos de cliente, permitiendo de este modo que los dispositivos de cliente recuperen el conjunto de representaciones, en un modelo de extracción.
En la etapa 310, un dispositivo de cliente obtiene el conjunto de representaciones. El conjunto de representaciones se obtiene del servidor, y como resultado de la difusión del servidor de la representación en la etapa 306.
En la etapa 314, un dispositivo de cliente obtiene una pantalla u otra GUI. La pantalla puede obtenerse con el fin de realizar una acción, tal como, pero sin limitación, rastrear el uso de la pantalla, presentar un recorrido digital, realizar un proceso automatizado, realizar pruebas automatizadas, modificar la representación visual de la pantalla, presentar otra capa de visualización sobre la pantalla, aumentando la funcionalidad de la pantalla, realizando análisis o similares.
En algunas realizaciones, la acción se realiza con respecto a un elemento de GUI de la pantalla. En algunas realizaciones, la pantalla se obtiene por un agente tal como el Agente 115 de la Figura 1.
En la etapa 318, el conjunto de representaciones se aplica en la pantalla. La aplicación del conjunto de representaciones se realiza de manera similar a la etapa 230 de la Figura 2. En algunas realizaciones, el conjunto de representaciones se aplica para adquirir, por el dispositivo de cliente, el elemento de GUI, para permitir realizar la acción.
En la etapa 320, se determina si la aplicación del conjunto de representaciones produjo un resultado indefinido. En caso de que se proporcione un resultado indefinido, el conjunto de representaciones no ha podido identificar de manera inequívoca el elemento de GUI y se desea modificar el conjunto de representaciones para mejorar su robustez. Se realizan las etapas 330-350. En los otros casos, si el elemento de GUI se identificó de manera inequívoca usando el conjunto de representaciones, puede realizarse la etapa 360.
En la etapa 330, la información puede comunicarse al servidor. La información puede comprender la pantalla, el contexto de GUI, el conjunto de representaciones que se aplicó, los resultados de aplicar el conjunto de representaciones o similares. En algunas realizaciones, la información se proporciona al servidor, para mejorar el conjunto de representaciones. Adicionalmente o como alternativa, el servidor retiene la información a usar por un algoritmo de aprendizaje automático, para garantía de calidad, o similares.
En la etapa 340, el servidor determina un conjunto de representaciones modificado. En algunas realizaciones, el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado. En algunas realizaciones, el conjunto de representaciones se modifica de una manera similar a la de la etapa 250 de la Figura 2. En algunas realizaciones, la modificación se basa en la entrada de usuario, realizada automáticamente usando aprendizaje automático, usando una combinación de los mismos, o similares.
En la etapa 350, los dispositivos de cliente obtienen el conjunto de representaciones modificado. En algunas realizaciones, el servidor está configurado para transmitir el conjunto de representaciones modificado a la pluralidad de dispositivos de cliente de la etapa 306. En algunas realizaciones, los dispositivos de cliente se actualizan con el conjunto de representaciones modificado, para habilitar cada uno de los dispositivos de cliente, al obtener una pantalla e intentar adquirir el elemento de GUI (por ejemplo, Etapas 314-318), para usar la representación modificada conjunto, en lugar del conjunto de representaciones original.
En la etapa 360, se realiza una acción por el dispositivo de cliente con respecto al elemento de GUI que se adquirió. En algunas realizaciones, un elemento de GUI adquirido puede ser un elemento de GUI que se identifica de manera inequívoca por una aplicación de un conjunto de representaciones. Adicionalmente o como alternativa, en caso de que el conjunto de representaciones produzca un resultado indefinido, se selecciona un elemento adquirido estimado y se realiza la etapa 360 con respecto al elemento adquirido estimado, tal como basándose en un criterio de selección, por ejemplo, voto mayoritario, selección ponderada, o similares. Se observa que la acción se toma en el dispositivo de cliente con respecto a un elemento adquirido estimado, que puede o no ser el elemento de GUI correcto. La acción se toma independientemente del conjunto de representaciones modificado, que puede no estar aún disponible en el momento en que se realiza la adquisición. Por ejemplo, el conjunto de representaciones modificado puede validarse por un usuario humano, que puede validarlo dentro de un marco de tiempo razonable, tal como, una hora, 24 horas, 72 horas, 2 semanas o similares. El dispositivo de cliente puede requerir una adquisición inmediata, sobre la marcha, del elemento de GUI, para sus fines. Tal adquisición puede realizarse usando la estimación, que puede estar disponible inmediatamente.
En algunas realizaciones, las etapas 318-360 pueden repetirse siempre que el agente de cliente se esté ejecutando. En algunas realizaciones, la información recopilada por el agente de cliente se comunica al servidor. La información puede usarse en un algoritmo de aprendizaje automático configurado para optimizar la determinación de conjuntos de representaciones a lo largo del tiempo.
Haciendo referencia ahora a la Figura 4 que muestra un diagrama de flujo de un método, de acuerdo con algunas realizaciones de la materia objeto desvelada.
En la etapa 400, se determina un conjunto de representaciones. La determinación se realiza por un servidor, tal como el Servidor 120 de la Figura 1. En algunas realizaciones, la determinación se basa en el historial de pantallas obtenidas previamente. En algunas realizaciones, determinar un conjunto de representaciones comprende la etapa 410 y la etapa 420.
En algunas realizaciones ilustrativas, un bot rastreador puede configurarse para rastrear a través de sitios web, recuperando los documentos web de cada página web. Los documentos web recuperados pueden retenerse en una base de datos histórica. Adicionalmente o como alternativa, puede desplegarse una pluralidad de agentes informatizados en dispositivos de cliente, y obtener cada pantalla vista por el cliente, en general o con respecto a un conjunto específico de programas rastreados. Cada una de tales pantallas puede transmitirse al servidor y retenerse en la base de datos histórica.
En la etapa 410, se determina un conjunto de representaciones alternativas. En algunas realizaciones, una representación alternativa comprende uno o más atributos de un elemento de GUI. Adicionalmente o como alternativa, una representación alternativa comprende una trayectoria relativa a un elemento de GUI en una jerarquía de elementos. Adicionalmente o como alternativa, una representación alternativa comprende una trayectoria absoluta al elemento de GUI en jerarquía de un elemento de<g>U<i>. En algunas realizaciones ilustrativas, pueden determinarse todas las combinaciones posibles de atributos que representan el elemento, trayectorias que conducen a los elementos, atributos que representan elementos intermedios y trayectorias entre los elementos intermedios y el elemento de GUI. En algunas realizaciones ilustrativas, el número de representaciones alternativas generadas puede estar limitado por un número máximo, tal como 1.000 representaciones.
En la etapa 420, se selecciona un subconjunto de representaciones alternativas. El subconjunto se selecciona del conjunto de representaciones alternativas que se determinó en la etapa 410. En algunas realizaciones, la selección puede ser de un subconjunto con un número limitado de representaciones alternativas. En algunas realizaciones ilustrativas, puede haber un número máximo de representaciones alternativas, tal como aproximadamente 5, aproximadamente 10, aproximadamente 20. El conjunto de representaciones puede incluir exactamente o no más que el número máximo de representaciones alternativas. En algunas realizaciones ilustrativas, el número máximo de representaciones alternativas puede reflejar un equilibrio entre robustez y rendimiento, en vista de que cada agente necesita aplicar cada representación alternativa en producción, desperdiciando potencialmente recursos computacionales. En algunas realizaciones ilustrativas, el número máximo de representaciones alternativas puede proporcionar una limitación en el número de representaciones alternativas aplicables por contexto de la GUI.
En algunas realizaciones ilustrativas, la selección de las representaciones alternativas al subconjunto puede basarse en un criterio de selección, tal como una puntuación de robustez estimada de cada representación alternativa. Adicionalmente o como alternativa, la selección puede realizarse para maximizar una puntuación de robustez estimada del conjunto de representaciones, tal como en vista de diferentes representaciones alternativas que representan diferentes aspectos del elemento de GUI. Por ejemplo, algunas representaciones seleccionadas pueden basarse en los atributos textuales del elemento, donde otras pueden basarse en propiedades jerárquicas del elemento y aún otras pueden basarse en atributos visuales del elemento. Puede considerarse improbable que todos los aspectos diferentes se modifiquen al mismo tiempo y, por lo tanto, la representación puede continuar siendo útil para adquirir el elemento de GUI.
En la etapa 430, se recibe una indicación. La indicación es una indicación de una aplicación del conjunto de representaciones que produce un resultado indefinido. En algunas realizaciones, la indicación se envía por un agente, tal como el Agente 115 de la Figura 1. La indicación comprende el conjunto de representaciones que se aplicó, el contexto de GUI, la GUI en la que se aplicó el conjunto de representaciones (por ejemplo, una pantalla), o similares.
En la etapa 440, en respuesta a recibir la indicación de la etapa 430, se determina un conjunto de representaciones modificado. El conjunto de representaciones determinado comprende un subconjunto diferente del conjunto previamente generado de representaciones alternativas, determinado en la etapa 410. En la etapa 450, se selecciona el subconjunto diferente. La selección se realiza basándose en la puntuación de robustez, en vista de que la representación alternativa no ha podido proporcionar un resultado correcto. En algunas realizaciones, en lugar de retener el conjunto de representaciones alternativas de la etapa 410, el conjunto se vuelve a calcular y puede hacerse una selección a partir del mismo.
Haciendo referencia ahora a la Figura 5A-5E, que muestra ilustraciones de pantallas, de acuerdo con algunas realizaciones de la materia objeto divulgada.
La Figura 5A puede ilustrar una página web de un portal de ventas. La GUI de la página web se muestra como la pantalla 500a. Un usuario con el nombre de John Doe puede iniciar sesión (503a). La pantalla 500a comprende el menú 501a. El menú 501a comprende categorías tales como Inicio 511a, Cuentas 502a, Contactos 505a o similares. Actualmente, la pantalla 500a indica visualmente que se ha seleccionado el inicio 511a y que el panel 520a muestra actualmente la subpágina de "inicio".
Cuando se presiona el elemento del menú Cuentas 502a, puede cargarse una nueva subpágina, "Cuentas", en el Panel 520a. Adicionalmente o como alternativa, la nueva subpágina puede cargarse cargando una página web diferente, reemplazando el contenido del panel 520a, o similares.
El elemento del menú Cuentas 502a puede adquirirse aplicando un conjunto de representaciones, de acuerdo con la materia objeto divulgada. El conjunto de representaciones puede basarse en varios atributos alternativos de cuentas 502a. Como un ejemplo, el conjunto de representaciones puede comprender dos representaciones alternativas. La primera representación alternativa puede ser "el 5° elemento del menú bajo el menú". La segunda representación alternativa puede ser "elemento del menú Y título=Cuentas".
La Figura 5B puede ilustrar otra página web del mismo portal de ventas que la Figura 5A. La Figura 5B muestra la pantalla 500b. Sin embargo, en esta realización de la GUI, los 5el el elemento en el Menú 501b es Contactos 505b, y no Cuentas 502b. La diferencia entre el orden de los elementos de menú entre las pantallas 500a y 500b puede ser el resultado de representaciones en una plataforma diferente, cambio programático de la página web, o similares. En algunas realizaciones ilustrativas, la diferencia puede ser un resultado de representar el mismo archivo de código fuente usando diferentes configuraciones.
Como puede apreciarse, si el mismo conjunto de representaciones descrito con relación a la Figura 5A se aplicara en la Figura 5B, el resultado sería indefinido. La primera representación alternativa apuntaría a los contactos 505b, mientras que la segunda representación alternativa apuntaría al elemento de GUI objetivo correcto, las cuentas 502b. Como puede apreciarse, la primera representación alternativa no es robusta y no garantiza la adquisición del elemento correcto en diferentes realizaciones de la misma GUI. en algunas realizaciones, el conjunto de representaciones puede comprender representaciones alternativas adicionales y puede usarse un voto mayoritario para seleccionar el elemento correcto entre los elementos potenciales para adquisición, 502b y 505b.
En algunas realizaciones, en caso de que el conjunto de representaciones proporcione un resultado indefinido cuando se aplica en la pantalla 500b, se puede mostrar a un administrador la pantalla 500a, con un resaltado del elemento de GUI objetivo, las Cuentas 502a, lado a lado con la Pantalla 500b, con un resaltado de los elementos potencialmente adquiridos. En algunas realizaciones, un elemento correcto más probable de entre una pluralidad de elementos potencialmente identificados puede mostrarse al usuario para su selección. Por ejemplo, si el conjunto de representaciones identificó ambos elementos 502b y 505b como elemento potencial para adquisición basándose en las representaciones alternativas, puede resaltarse uno de tales elementos, y el usuario puede confirmar o rechazar la selección. Una representación de este tipo puede proporcionar al usuario una manera gráfica simple para determinar visualmente si el elemento adquirido en la pantalla 500b es de hecho el elemento cuya adquisición se definió basándose en la pantalla 500a. Adicionalmente o como alternativa, en caso de que no se identifique ningún candidato potencial para adquisición, el usuario puede seleccionar el elemento para adquisición de la pantalla 500b, mientras visualiza el elemento como se muestra en la pantalla 500a.
En algunas realizaciones, pueden asociarse representaciones alternativas con diferentes contextos de GUI, y aplicarse únicamente a pantallas que coinciden con sus respectivos contextos de GUI. En algunas realizaciones ilustrativas, un contexto de g U i puede comprender el archivo de configuración. El archivo de configuración puede indicar si la pantalla que se muestra es la Pantalla 500a o la Pantalla 500b. En tal caso, se puede determinar que una representación alternativa que se basa en la 5ta posición en el menú ("el 5° elemento del menú bajo el menú") puede usarse en la pantalla de indicación de configuración 500a, mientras que una representación alternativa diferente, tal como "el 4° elemento del menú bajo el menú", puede ser aplicable a la pantalla de indicación de configuración 500b.
En algunas realizaciones ilustrativas, el contexto de GUI puede determinarse automáticamente por un algoritmo de resolución de contexto. El algoritmo de resolución de contexto puede recopilar información del dispositivo en el que se muestra la GUI tal como el hardware del dispositivo, el OS del dispositivo o similares. Adicionalmente o como alternativa, el algoritmo de resolución de contexto puede obtener datos de archivos que están asociados con el programa que visualiza la GUI tales como archivos de cookies, archivos de configuración o similares. Adicionalmente o como alternativa, el algoritmo de resolución de contexto puede obtener datos de un servidor de extremo trasero configurado para servir el programa que visualiza la GUI.
La Figura 5C puede ilustrar una pantalla 500c, que muestra una página web de "contactos", donde se selecciona Contactos 505c. La pantalla 500c es una pantalla de un navegador web, que comprende también un campo de URL 502c, que indica que la URL es "ga.com/contacts". En algunas realizaciones ilustrativas, la pantalla 500c puede cargarse después de que un usuario presionó los contactos 505a en la pantalla 500a de la Figura 5A. La pantalla 500c comprende el botón nuevo 506c. El botón nuevo 506c tiene la etiqueta "Nuevo". Presionar el Botón Nuevo 506c puede, por ejemplo, crear un nuevo contacto.
La Figura 5D puede ilustrar una pantalla 500d, que muestra una página web de "oportunidad", donde se selecciona Oportunidades 512d. La pantalla 500d comprende el campo de URL 502d, que indica que la URL es "ga.com/opportunities". La página web puede cargarse después de que un usuario presione la Oportunidad 512a de la Figura 5A. La pantalla 500d también comprende el botón nuevo 506d. De manera similar al Botón Nuevo 506c, el Botón Nuevo 506d también se etiqueta simplemente como "Nuevo". Sin embargo, su funcionalidad es diferente, ya que hacer clic en el botón nuevo 506d puede crear una nueva oportunidad en lugar de un nuevo contacto.
Un conjunto de representaciones puede comprender una representación alternativa tal como "Tipo=Botón" y "Texto=Nuevo". Aplicar esa representación alternativa en la pantalla 500c puede identificar el botón nuevo 506c, mientras que aplicar esa representación alternativa en una pantalla 500d puede identificar el botón nuevo 506d. A pesar de que la etiqueta "Nuevo" para un botón es un identificador único en cada una de tales pantallas, tal representación no es una representación robusta del botón relevante que tiene la funcionalidad deseada dentro del propio programa. Por lo tanto, la misma representación podría utilizarse como parte del conjunto de representaciones para representar el botón de nuevos contactos, pero daría como resultado un resultado indefinido cuando se aplica en la pantalla 500d.
En algunas realizaciones ilustrativas, la representación alternativa "Tipo=Botón y Texto=Nuevo" puede ser aplicable únicamente en el contexto de GUI del URL que es "ga.com/contactos", que tiene un sufijo de "/contactos", o similares. En ese caso, aplicar la representación establecida en la pantalla 500c puede identificar el botón nuevo 506c. Aplicar ese conjunto de representaciones en la pantalla 500d puede proporcionar un resultado vacío, en vista de que la representación alternativa no se aplica debido al contexto de GUI diferente.
La Figura 5E ilustra la Pantalla 500e similar a la que se muestra en la Figura 5A. La funcionalidad aumentada a la pantalla 500a puede proporcionar un elemento adicional no presente en la GUI original (pantalla 500a). Adicionalmente o como alternativa, una capa de visualización puede añadir elementos a la GUI. Como un ejemplo, un elemento de información sobre herramientas puede introducirse en la pantalla 500a y presentarse en 500e. El Contenedor 521e puede ser adquirido y modificado para introducir un elemento de información emergente (Tooltip) 510e, el cual se muestra cuando se detecta un evento de "pasar el ratón por encima" (mouse hover) con respecto al Contenedor 521e. Por lo tanto, puede desearse una adquisición robusta y automática del contenedor 521e.
Haciendo referencia ahora a la Figura 6A, que muestra un aparato de acuerdo con algunas realizaciones de la materia objeto divulgada.
En algunas realizaciones ilustrativas, el aparato 600 puede configurarse para proporcionar servicios de extremo trasero a dispositivos de cliente. Adicionalmente o como alternativa, el Aparato 600 está configurado para determinar conjuntos de representaciones de uno o más elementos de GUI. Adicionalmente o como alternativa, el Aparato 600 es capaz de transmitir, difundir, o similares, un conjunto de representaciones a un dispositivo de cliente, a una pluralidad de dispositivos de cliente, o similares.
El aparato 600 comprende uno o más procesador o procesadores 602 El procesador 602 puede ser una unidad de procesamiento central (CPU), una unidad de procesamiento gráfico (GPU), un microprocesador, un circuito electrónico, un circuito integrado (CI) o similares. El procesador 602 puede utilizarse para realizar cálculos requeridos por el aparato 600 o cualquiera de sus subcomponentes.
En algunas realizaciones de la materia objeto divulgada, el aparato 600 comprende un módulo de entrada/salida (E/S) 604. El módulo de E/S 604 se utiliza para proporcionar una salida a y recibir una entrada de un usuario, tal como, por ejemplo, obtener una selección de elementos de GUI, obtener una confirmación con respecto a la aplicación de un conjunto de representaciones, o similares. Como un ejemplo, aplicar un conjunto de representaciones puede proporcionar un resultado indefinido. Un usuario puede observar dos o más resultados diferentes y puede proporcionar una selección de un elemento de GUI.
El aparato 600 comprende la unidad de memoria 606. La unidad de memoria 606 puede ser una unidad de disco duro, un disco flash, una memoria de acceso aleatorio (RAM), un chip de memoria o similares. En algunas realizaciones, la unidad de memoria 606 retiene el código de programa operativo para hacer que el procesador 602 realice acciones asociados con cualquiera de los subcomponentes del aparato 600. En algunas realizaciones, la unidad de memoria 606 puede retener conjuntos de representaciones para distribuirse a agentes, representaciones alternativas para cada elemento, base de datos histórica de pantallas (por ejemplo, retenida en la base de datos de pantallas históricas 660), o similares.
La unidad de memoria 606 comprende uno o más componentes como se detalla a continuación, implementados como ejecutables, bibliotecas, bibliotecas estáticas, funciones o cualquier otro componente ejecutable.
La unidad de memoria 606 comprende un determinador de representaciones 610. El Determinador de Representaciones 610 está configurado para determinar un conjunto de representaciones para un elemento de GUI en una GUI de un programa. En algunas realizaciones, el Determinador de Representaciones 610 está configurado para generar un conjunto de representaciones alternativas del elemento de GUI a usar en un conjunto de representaciones. En algunas realizaciones, el Determinador de Representaciones 610 genera un conjunto de representaciones alternativas, un subconjunto de las cuales puede seleccionarse y usarse en el conjunto de representaciones. En algunas realizaciones, el Determinador de Representaciones 610 obtiene pantallas de la Base de Datos de Pantallas Históricas 660 para aplicar el conjunto de representaciones alternativas en la misma. El Determinador de Representaciones 610 aplica cada una de las representaciones alternativas que comprenden el subconjunto para construir un conjunto de representaciones. Aplicando las representaciones alternativas en diferentes pantallas que se encontraron en el pasado, se estima cuál de las representaciones alternativas es robusta y devolvería el resultado correcto a lo largo del tiempo. Usando tal información, se construye el conjunto de representaciones, incluyendo representaciones alternativas que se han probado, usando pantallas de la base de datos de pantallas históricas 660, para proporcionar resultados correctos y definitivos.
El Determinador de Representaciones 610 está configurado para almacenar el conjunto de representaciones alternativas que proporcionaron resultados correctos. En algunas realizaciones, las representaciones alternativas para cada elemento de GUI se retienen en la base de datos de representaciones alternativas 680. Adicionalmente o como alternativa, las representaciones alternativas se retienen junto con métricas de precisión, indicaciones de pantallas en las que la representación no funcionó correctamente, tal como contexto de GUI de la misma, indicaciones de pantallas en las que la presentación funcionó correctamente, o similares.
En algunas realizaciones, el Determinador de Representaciones 610 está configurado para determinar el conjunto de representaciones a obtener por agentes de cliente, posibilitando que tales agentes adquieran el elemento de GUI.
En algunas realizaciones, puede proporcionarse un número máximo de representaciones alternativas permitidas por conjunto de representaciones al Determinador de Representaciones 610. Como el número de representaciones alternativas potenciales puede ser muy grande, tal como millones o incluso miles de millones de combinaciones potenciales, proporcionar un supremo al número de representaciones alternativas en el conjunto de representaciones puede producir una mejora en el consumo de recursos de la materia objeto divulgada. Adicionalmente o como alternativa, puede proporcionarse un número mínimo de representaciones alternativas en el conjunto de representaciones al Determinador de Representaciones 610. Proporcionar un mínimo al número de representaciones alternativas puede asegurar un nivel de confianza para la adquisición de un elemento de GUI. Como un ejemplo, el Determinador de Representaciones 610 puede generar un conjunto de representaciones que comprende cinco (5) representaciones alternativas. El conjunto de representaciones puede proporcionar resultados mixtos cuando funciona en el campo. Por ejemplo, en algunos casos, la adquisición del elemento de GUI usando las cinco representaciones alternativas puede fallar, y en otros casos, puede tener éxito. Como resultado, puede aumentarse el mínimo. Por ejemplo, en lugar de usar cinco (5) representaciones alternativas, pueden usarse diez (10) representaciones alternativas, produciendo un mayor nivel de confianza de adquisición en comparación con un conjunto de representaciones que comprende únicamente la mitad de tantas representaciones alternativas. En algunas realizaciones ilustrativas, puede aprenderse automáticamente un número potencialmente óptimo de representaciones alternativas a usar para representar un elemento de GUI basándose en los atributos del elemento de GUI, en vista de los resultados reales de aplicar conjuntos de representaciones de elementos de GUI similares. El número potencialmente óptimo puede equilibrar los problemas de rendimiento relacionados con la aplicación de muchas representaciones alternativas, por un lado, y el nivel de confianza relacionado con la aplicación de pocas representaciones alternativas.
En algunas realizaciones, el Determinador de Representaciones 610 está configurado para determinar diferentes conjuntos de representaciones para el mismo elemento de GUI en diferentes contextos de GUI. El contexto de GUI es indicativo para la plataforma desde la que se obtuvo la pantalla, indicativo de caracterizaciones del usuario, o similares. Como un ejemplo, un contexto de GUI puede comprender el idioma en el que se presenta un sitio web al usuario final. Puede haber un botón que comprenda una etiqueta "END" para la versión en inglés y una etiqueta "FIN" para la versión en francés. El Determinador de Representaciones 610 determina dos conjuntos de representaciones diferentes, uno para cada idioma. En algunas realizaciones ilustrativas, todos los conjuntos de representaciones pueden distribuirse a todos los agentes para seleccionarse de este modo sobre la marcha. Adicionalmente o como alternativa, cada agente puede proporcionar un conjunto de contextos de GUI relevantes al mismo, y obtener los conjuntos de representaciones que coinciden con los contextos de GUI relevantes.
Adicionalmente o como alternativa, el Determinador de Representaciones 610 almacena el conjunto de representaciones alternativas a usar por el Aprendiz de Representaciones 650. En algunas realizaciones, el Determinador de Representaciones 610 puede almacenar las representaciones alternativas que proporcionaron un resultado correcto. Adicionalmente o como alternativa, el Determinador de Representaciones 610 puede almacenar las representaciones alternativas que no han podido proporcionar el resultado correcto. Tal información puede ser útil para el aprendizaje automatizado realizado por el Aprendiz de Representaciones 650.
La unidad de memoria 606 puede comprender el transmisor de representaciones 620. El transmisor de representaciones 620 está configurado para transmitir un conjunto de representaciones a un dispositivo de cliente, tal como el aparato 601 de la Figura 6B, 110 de la Figura 1 o similares. En algunas realizaciones, el transmisor de representaciones 620 está configurado para difundir un conjunto de representaciones a una pluralidad de dispositivos de cliente. Adicionalmente o como alternativa, la transmisión puede invocarse mediante una solicitud desde el dispositivo de cliente. En algunas realizaciones, el conjunto de representaciones transmitido, ya sea difundido, o dirigido específicamente al dispositivo de cliente, se recibe de este modo y se procesa por el agente ejecutado en el mismo.
La Unidad de Memoria 606 comprende el Obtenedor de Resultados Indefinidos 630. El Obtenedor de Resultados Indefinidos 630 está configurado para obtener resultados indefinidos de dispositivos de cliente. En algunas realizaciones, un dispositivo de cliente aplica un conjunto de representaciones, tal como en producción, que produce un resultado indefinido. El resultado indefinido se notifica al Aparato 600 y se obtiene por el Obtenedor de Resultados Indefinidos 630. En algunas realizaciones, el Obtenedor de Resultados Indefinidos 630 invoca el Actualizador de Representaciones 640 para modificar el conjunto de representaciones en vista del resultado indefinido. En algunas realizaciones, la actualización se realiza inmediatamente después de recibir el resultado indefinido. Adicionalmente o como alternativa, la actualización se realiza después de que se proporciona la entrada manual. Adicionalmente o como alternativa, la actualización se realiza periódicamente.
En algunas realizaciones, el resultado indefinido obtenido por el Obtenedor de Resultados Indefinidos 630 se almacena en la Base de Datos de Resultados Indefinidos 670. En algunas realizaciones, la base de datos de representaciones alternativas 680 puede actualizarse para indicar qué representación alternativa provocó el resultado indefinido, en qué contextos de GUI, en qué GUI o similares.
La unidad de memoria 606 comprende el actualizador de representaciones 640. El actualizador de representaciones 640 está configurado para actualizar el conjunto de representaciones que proporcionó un resultado indefinido. El Actualizador de Representaciones 640 responde a una instrucción por el Obtener Resultados Indefinidos 630. En algunas realizaciones, en respuesta a cada resultado indefinido que se obtiene, el actualizador de representaciones 640 está configurado para modificar el conjunto de representaciones eliminando del mismo una o más representaciones alternativas. Adicionalmente o como alternativa, el actualizador de representaciones 640 está configurado para añadir nuevas representaciones alternativas al conjunto de representaciones. En algunas realizaciones, las nuevas representaciones alternativas se seleccionan de un conjunto de representaciones alternativas generadas por el Determinador de Representaciones 610, o de un conjunto similar generado a demanda por el Actualizador de Representaciones 640.
En algunas realizaciones, el resultado indefinido incluye dos o más elementos candidatos diferentes para adquisición. El actualizador de representaciones 640 visualiza los elementos candidatos, o porción de los mismos, a un usuario administrador, ofreciendo al usuario administrador seleccionar el elemento correcto para adquisición. En algunas realizaciones, la pantalla muestra al usuario administrador la pantalla original y el elemento de GUI adquirido en la misma, así como la pantalla actual que dio como resultado el resultado indefinido. En algunas realizaciones, los elementos candidatos se resaltan en la pantalla actual. En algunas realizaciones, pueden resaltarse candidatos que tienen una puntuación de probabilidad de ser correctos por encima de un umbral predeterminado. Adicionalmente o como alternativa, puede resaltarse un candidato principal. Basándose en la selección de usuario administrador, el actualizador de representaciones 640 puede determinar qué representaciones alternativas se realizaron mal. Adicionalmente o como alternativa, la selección del usuario puede retenerse en bases de datos, tales como 660-680, y utilizarse para entrenar un modelo de aprendizaje automático para seleccionar automáticamente entre representaciones alternativas cuando se determinan resultados indefinidos, tal como basándose en atributos del elemento de GUI, GUI contextos, parámetros de las representaciones alternativas candidatas, o similares.
La unidad de memoria 606 comprende el aprendiz de representaciones 650. El aprendiz de representaciones 650 está configurado para entrenar un modelo predictivo basándose en representaciones alternativas, basándose en conjuntos de representaciones, basándose en elementos de GUI, basándose en GUI de programas, o similares. En algunas realizaciones, la salida del Aprendiz de Representaciones 650 se aplica en una selección actualmente obtenida de un elemento de GUI y en representaciones alternativas para seleccionar las representaciones alternativas a incluir en el conjunto de representaciones para el elemento de<g>U<i>.
En algunas realizaciones, el Aprendiz de Representaciones 650 puede implementar un modelo de "bolsa de palabras". Cada una de las representaciones alternativas puede verse como una palabra. El Aprendiz de Representaciones 650 puede configurarse para entrenar un modelo predictivo en el que las representaciones alternativas son las características. Para cada elemento de GUI, la salida del Aprendiz de Representaciones 650 puede ser un conjunto de representaciones que comprende una pluralidad de representaciones alternativas, cada una de las cuales puede estar asociada con una puntuación, permitiendo una decisión de mayoría ponderada. En algunas realizaciones, en caso de que aplicar el conjunto de representaciones proporcione un resultado indefinido, una decisión mayoritaria puede proporcionar el elemento de GUI. Adicionalmente o como alternativa, los pesos pueden usarse para seleccionar un subconjunto de la pluralidad de representaciones alternativas a usarse como el conjunto de representaciones.
Haciendo referencia ahora a la Figura 6B, que muestra un aparato de acuerdo con algunas realizaciones de la materia objeto divulgada. En algunas realizaciones ilustrativas, el Aparato 601 es un dispositivo de cliente, tal como el Dispositivo de Cliente 110 de la Figura 1.
En algunas realizaciones, el aparato 600 comprende uno o más procesadores 602, un módulo de E/S 604, una unidad de memoria 606 o similares.
En algunas realizaciones, el procesador 602 se utiliza para realizar cálculos requeridos por el aparato 601 o cualquiera de sus subcomponentes.
El módulo de E/S 604 se utiliza para comunicarse con otros dispositivos informatizados, como el servidor 120 de la Figura 1, el aparato 600 de la Figura 6A, o similares, para recibir un conjunto de representaciones, para notificar al servidor de un resultado indefinido y proporcionar el correspondiente información al mismo, para proporcionar información de uso y tasas de éxito de cada conjunto de representaciones, o similares.
La unidad de memoria 606 se utiliza para retener conjuntos de representaciones que se van a usar para la adquisición de elementos de GUI.
La Unidad de Memoria 606 comprende el Obtenedor de Pantalla 650. El Obtenedor de Pantalla 650 está configurado para obtener una GUI de un programa. Como un ejemplo, un usuario (no mostrado) usa el Aparato 601 para sus necesidades, tal como para utilizar una aplicación basada en web, una aplicación móvil o similares. Para proporcionar servicios tales como recorridos, análisis de uso, aumento de funcionalidad o similares, el Obtenedor de Pantalla 650 obtiene la pantalla actual que está usando el usuario. La pantalla se obtiene capturando una representación digital de la GUI, tal como obtener un archivo XML que representa la pantalla, obtener un archivo HTML que representa la pantalla, obtener un archivo de diseño que representa la pantalla, obtener un objeto de playground que representa la pantalla, obtener un archivo DOM, como en GUI basadas en JavaScript™, obtener una imagen de captura de pantalla de la pantalla, o similares.
La unidad de memoria 606 comprende el módulo de adquisición de elementos de GUI 655. El módulo de adquisición de elemento de GUI 655 está configurado para adquirir un elemento de GUI. Un elemento de GUI se adquiere automáticamente, basándose en una aplicación de un conjunto de representaciones en la GUI, obtenido por el Obtenedor de Pantalla 650. Se alcanza el elemento adquirido, tal como para permitir acceso a propiedades del mismo o modificación de tales propiedades, usando un puntero, un identificador, un nodo en un objeto de DOM o similares. En algunas realizaciones, el módulo de adquisición de elemento de GUI 655 desencadena la ejecución de otros componentes de la Unidad de Memoria 606 tales como el Obtenedor de Conjunto de Representaciones 660, el Identificador de Adquisición Indefinida 665, el Resolutor de Adquisición Indefinida 670 o similares.
El Módulo de Adquisición de Elemento de GUI 655 obtiene un conjunto de representaciones proporcionado por el Obtenedor de Conjunto de Representaciones 660. Adicionalmente o como alternativa, después de aplicar un conjunto de representaciones, el Módulo de Adquisición de Elemento de GUI 655 está configurado para invocar el Identificador de Adquisición Indefinido 665 para determinar si dicha aplicación del conjunto de representaciones proporcionó un resultado indefinido.
La unidad de memoria 606 comprende el Obtenedor de Conjunto de Representaciones 660. El Obtenedor de Conjunto de Representaciones 660 está configurado para obtener conjuntos de representaciones, tal como desde un servidor. En algunas realizaciones, el Obtenedor de Conjunto de Representaciones 660 recibe el conjunto de representaciones basándose en una difusión del servidor, enviando una consulta al servidor en un modelo de comunicación de extracción, o similares. El Obtenedor de Conjunto de Representaciones 660 obtiene el conjunto de representaciones por adelantado y almacena el conjunto de representaciones en la Unidad de Memoria 606. Adicionalmente o como alternativa, el Obtenedor de Conjunto de Representaciones 660 obtiene el conjunto de representaciones a demanda, cuando se hace disponible un proceso que requiere la adquisición de un elemento de GUI. En algunas realizaciones, el Obtenedor de Conjunto de Representaciones 660 obtiene una pluralidad de conjuntos de representaciones, cada uno de los cuales es útil para adquirir un elemento de GUI diferente.
La Unidad de Memoria 606 comprende el Identificador de Adquisición Indefinida 665. El Identificador de Adquisición Indefinida 665 está configurado para identificar un resultado indefinido cuando se intenta adquirir un elemento de GUI. En algunas realizaciones, en respuesta al módulo de adquisición de elemento de GUI 655 que aplica el conjunto de representaciones, el identificador de adquisición indefinido 665 determina si el resultado es un resultado indefinido o un resultado definido. El Identificador de Adquisición Indefinida 665 identifica un resultado indefinido en caso de que una representación alternativa que comprenda el conjunto de representaciones proporcione más de un resultado. Adicionalmente o como alternativa, el Identificador de Adquisición Indefinida 665 identifica un resultado indefinido en caso de que dos representaciones alternativas diferentes comprendidas por el conjunto de representaciones proporcionaran resultados diferentes, tales como identificar dos o más elementos diferentes como el elemento a adquirir, o identificar un elemento a adquirir por un lado y ningún elemento a adquirir por otro lado.
La unidad de memoria 606 comprende el Resolutor de Adquisición Indefinida 670. El Resolutor de Adquisición Indefinida 670 está configurado para resolver el resultado indefinido de un elemento de GUI con el fin de adquirir un elemento aunque sea el resultado indefinido. En algunas realizaciones, el Resolutor de Adquisición Indefinida 670 está configurado para seleccionar un elemento de GUI de un conjunto de candidatos potenciales que se identificaron por la aplicación del conjunto de representaciones en la GUI. En algunas realizaciones, puede hacerse un voto mayoritario u otra decisión de quórum para seleccionar entre los posibles candidatos. Adicionalmente o como alternativa, puede asociarse una puntuación con cada candidato, permitiendo usar una decisión de mayoría ponderada. En algunas realizaciones, la puntuación del candidato puede basarse en un nivel de confianza asociado con la representación alternativa que proporcionó el candidato, el número de representaciones alternativas que proporcionaron el candidato, la tasa de éxito de la aplicación de la representación alternativa en otras GUI, o similares. En algunas realizaciones, el Resolutor de Adquisición Indefinida 670 puede aplicar un modelo de aprendizaje automático para seleccionar el candidato correcto de entre los candidatos potenciales proporcionados por la aplicación del conjunto de representaciones. En algunas realizaciones, el modelo de aprendizaje automático puede proporcionarse por el Aprendiz de Representaciones 650 de la Figura 6A. En algunas realizaciones, el modelo predictivo determinado por el Aprendiz de Representaciones 650 de la Figura 6A se proporciona al Aparato 601 y se aplica para resolver resultados indefinidos automáticamente.
La unidad de memoria 606 puede comprender el actualizador de servidor 675. El actualizador de servidor 675 está configurado para enviar actualizaciones a un servidor tal como el servidor 120 de la Figura 1, el aparato 600 de la Figura 6a o similares. En algunas realizaciones, en respuesta a un resultado indefinido de aplicar un conjunto de representaciones, el actualizador de servidor 675 comunica la información relevante al servidor, para invocar una modificación del conjunto de representaciones. En algunas realizaciones, la información se obtiene por el Obtenedor de Resultados Indefinidos 630 de la Figura 6A. Adicionalmente o como alternativa, puede transmitirse información adicional por el Actualizador de Servidor 675 al servidor. Por ejemplo, pueden transmitirse estadísticas de uso de aplicación de conjunto de representaciones. Como otro ejemplo, las GUI obtenidas por el Obtenedor de Pantalla 650 pueden transmitirse al servidor, y retenerse en una base de datos, tal como la Base de Datos de Pantallas Históricas 660.
La presente invención puede ser un sistema, un método y/o un producto de programa informático. El producto de programa informático puede incluir un medio (o medios) de almacenamiento legible por ordenador que tiene instrucciones de programa legibles por ordenador en el mismo para hacer que un procesador lleve a cabo aspectos de la presente invención.
El medio de almacenamiento legible por ordenador puede ser un dispositivo tangible que puede mantener y almacenar instrucciones para su uso por un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero sin limitación, un dispositivo de almacenamiento electrónico, un dispositivo de almacenamiento magnético, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento electromagnético, un dispositivo de almacenamiento de semiconductores, o cualquier combinación adecuada de lo anterior. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete de ordenador portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable borrable (EPROM o memoria Flash), una memoria de acceso aleatorio estática (SRAM), un disco compacto-memoria de solo lectura (CD-ROM) portátil, un disco versátil digital (DVD), un lápiz de memoria, un disco flexible, un dispositivo con codificación mecánica, tal como tarjetas perforadas o estructuras en relieve dispuestas en una ranura, que llevan instrucciones registradas en el mismo, y cualquier combinación adecuada de lo anterior. Un medio de almacenamiento legible por ordenador, como se usa en el presente documento, no ha de interpretarse como que son señales transitorias per se, tales como ondas de radio u otras ondas electromagnéticas que se propagan libremente, ondas electromagnéticas que se propagan a través de una guía de onda u otro medio de transmisión (por ejemplo, pulsos de luz que pasan a través de un cable de fibra óptica), o señales eléctricas transmitidas a través de un alambre.
Las instrucciones de programa legibles por ordenador descritas en el presente documento pueden descargarse en dispositivos informáticos/de procesamiento respectivos desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo por medio de una red, por ejemplo, Internet, una red de área local, una red de área extensa y/o una red inalámbrica. La red puede comprender cables de transmisión de cobre, fibras de transmisión óptica, transmisión inalámbrica, encaminadores, cortafuegos, conmutadores, ordenadores de pasarela y/o servidores de borde. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo informático/de procesamiento recibe instrucciones de programa legibles por ordenador de la red y reenvía las instrucciones de programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo informático/de procesamiento respectivo.
Las instrucciones de programa legibles por ordenador para llevar a cabo las operaciones de la presente invención pueden ser instrucciones de ensamblador, instrucciones de la arquitectura de conjunto de instrucciones (ISA), instrucciones de máquina, instrucciones dependientes de máquina, microcódigo, instrucciones de firmware, datos de ajuste de estado, o cualquier código fuente o código objeto escrito en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado a objetos tal como Smalltalk, C++ o similares, y lenguajes de programación procedurales convencionales, tales como el lenguaje de programación "C" o lenguajes de programación similares. Las instrucciones de programa legibles por ordenador pueden ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto o completamente en el ordenador remoto o servidor. En el último escenario, el ordenador remoto puede conectarse al ordenador del usuario a través de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área extensa (WAN), o la conexión puede hacerse a un ordenador externo (por ejemplo, a través de Internet usando un Proveedor de Servicio de Internet). En algunas realizaciones, la circuitería electrónica que incluye, por ejemplo, circuitería de lógica programable, matrices de puertas programables en campo (FPGA) o matrices de lógica programable (PLA), puede ejecutar las instrucciones de programa legibles por ordenador utilizando información de estado de las instrucciones de programa legibles por ordenador para personalizar la circuitería electrónica, con el fin de realizar aspectos de la presente invención.
Los aspectos de la presente invención se describen en el presente documento con referencia a ilustraciones de diagrama de flujo y/o diagramas de bloques de los métodos, aparatos (sistemas) y productos de programa informático de acuerdo con las realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones de flujograma y/o diagramas de bloque, y las combinaciones de los bloques de las ilustraciones de flujograma y/o diagramas de bloque se pueden implementar mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador pueden proporcionarse a un procesador de un ordenador de fin general, ordenador de fin especial u otro aparato de procesamiento de datos programable para producir una máquina, de manera que las instrucciones, que se ejecutan mediante el procesador del ordenador u otro aparato de procesamiento de datos programable, crean medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques. Estas instrucciones de programa legibles por ordenador pueden almacenarse también en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programare, y/u otros dispositivos para funcionar de una manera particular, de manera que el medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo comprende un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acto especificado en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
Las instrucciones de programa legibles por ordenador pueden cargarse también en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para hacer que se realice una serie de etapas operacionales en el ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, de manera que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementan las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques de diagrama de bloque o bloques.
El diagrama de flujo y diagramas de bloques en las Figuras ilustran la arquitectura, funcionalidad, y operación de posibles implementaciones de sistemas, métodos y productos de programa informático de acuerdo las diversas realizaciones de la presente invención. En este sentido, cada bloque en el diagrama de flujo o diagramas de bloques puede representar un módulo, segmento o porción de instrucciones, que comprende una o más instrucciones ejecutables para implementar la función o funciones lógicas especificadas. En algunas implementaciones alternativas, las funciones indicadas en el bloque pueden tener lugar fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en serie, de hecho, pueden ejecutarse sustancialmente de manera concurrente, o los bloques pueden ejecutarse en ocasiones en el orden inverso, dependiendo de la funcionalidad implicada. Se observará también que cada bloque de los diagramas de bloques y/o ilustración de diagrama de flujo y combinaciones de bloques en los diagramas de bloques y/o ilustración de diagrama de flujo pueden implementarse por sistemas basados en hardware de fin especial que realizan las funciones o actos especificados o llevan a cabo combinaciones de hardware de fin especial e instrucciones informáticas.
La terminología usada en el presente documento es para el propósito de describir solo realizaciones particulares y no se pretende que sea limitante de la invención. Como se usa en el presente documento, las formas singulares "un/una" y "el/la" pretenden incluir también las formas plurales, a menos que el contexto indique claramente lo contrario. Se entenderá además que los términos "comprende" y/o "que comprende", cuando se usan en esta memoria descriptiva, especifican la presencia de características, enteros, etapas, operaciones, elementos, y/o componentes establecidos, pero no excluyen la presencia o adición de una o más características, enteros, etapas, operaciones, elementos, componentes adicionales y/o grupos de los mismos.
Las estructuras, materiales o acciones correspondientes en las reivindicaciones a continuación están destinados a incluir cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados como se reivindica específicamente. La descripción de la presente invención se ha presentado con fines de ilustración y descripción, pero no se tiene por objeto que sea exhaustiva o que se limite a la invención en la forma divulgada. La realización se ha elegido y descrito con el fin de explicar mejor los principios de la invención y la aplicación práctica, y de habilitar que otras personas con conocimientos ordinarios en la materia entiendan la invención para diversas realizaciones con diversas modificaciones que se adapten al uso particular contemplado.
Claims (18)
1. Un método que comprende:
obtener (200) una selección de un elemento de interfaz gráfica de usuario, GUI;
obtener (210, 310) un conjunto de representaciones del elemento de GUI, en donde el conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI;
aplicar (230, 318) el conjunto de representaciones para identificar el elemento de GUI en una GUI de un programa, en donde dicha aplicación (230, 318) del conjunto de representaciones comprende, para cada representación de la pluralidad de representaciones alternativas, aplicar independientemente cada representación para identificar uno o más elementos de GUI que corresponden a cada representación; y
en respuesta a determinar (240) que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener (250, 350) un conjunto de representaciones modificado, en donde dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido debido a una representación alternativa de la pluralidad de representaciones alternativas, en donde el conjunto de representaciones modificado se obtiene eliminando (260) la representación alternativa del conjunto de representaciones, por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona un resultado definitivo.
2. El método de la reivindicación 1, en donde dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido debido a que no se identifica ningún elemento en la GUI usando la representación alternativa.
3. El método de la reivindicación 1, en donde la pluralidad de representaciones alternativas comprende la representación alternativa y una segunda representación alternativa; en donde dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de un primer elemento usando la representación alternativa y la identificación de un segundo elemento usando la segunda representación alternativa, en donde el primer elemento y el segundo elemento son diferentes.
4. El método de la reivindicación 1, en donde dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido debido a la identificación de dos o más elementos usando la representación alternativa.
5. El método de la reivindicación 1,
en donde dicha obtención (250, 350) del conjunto de representaciones modificado comprende añadir una nueva representación al conjunto de representaciones,
en donde la nueva representación está configurada para identificar de manera inequívoca el elemento de GUI en la GUI del programa,
por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona el resultado definitivo.
6. El método de la reivindicación 1,
en donde un servidor está configurado para definir el conjunto de representaciones, en donde el servidor está configurado para transmitir el conjunto de representaciones a una pluralidad de dispositivos de cliente;
en donde dicha aplicación (230, 318) del conjunto de representaciones se realiza en un dispositivo cliente; en donde, en respuesta a que el dispositivo cliente determine que dicha aplicación del conjunto de representaciones proporciona el resultado indefinido, comunicar información al servidor, en donde el servidor está configurado para modificar el conjunto de representaciones para determinar el conjunto de representaciones modificado y para transmitir el conjunto de representaciones modificado a la pluralidad de dispositivos cliente; y en donde dicha obtención (250, 350) del conjunto de representaciones modificado comprende obtener por un dispositivo el conjunto de representaciones modificado del servidor, en donde el dispositivo está comprendido por la pluralidad de dispositivos de cliente.
7. El método de la reivindicación 1,
en donde dicha aplicación (230, 318) del conjunto de representaciones se realiza una pluralidad de veces, cada una de las cuales con respecto a una GUI diferente, en donde las diferentes GUI se recuperan de una base de datos histórica, reteniendo las GUI previamente encontradas por agentes informatizados.
8. El método de la reivindicación 1,
en donde la representación alternativa usa al menos uno de:
uno o más atributos del elemento de GUI;
uno o más atributos de otro elemento de GUI;
una trayectoria relativa al elemento de GUI en una jerarquía de elementos; y
una trayectoria absoluta al elemento de GUI en la jerarquía de elementos.
9. El método de la reivindicación 1,
en donde dicha obtención (210, 310) del conjunto de representaciones comprende:
determinar un conjunto de representaciones alternativas; y
seleccionar un subconjunto del conjunto de representaciones alternativas, seleccionando de este modo la pluralidad de representaciones alternativas; y
en donde el conjunto de representaciones modificado se obtiene seleccionando un subconjunto diferente del conjunto de representaciones alternativas.
10. El método de la reivindicación 1 comprende adicionalmente, en respuesta a determinar que dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido:
mostrar la GUI a un usuario;
identificar el elemento de GUI en la GUI basándose en la entrada de usuario del usuario; y
en donde dicha obtención (250, 350) del conjunto de representaciones modificado comprende determinar un nuevo conjunto de representaciones alternativas que identifican de manera inequívoca el elemento de GUI en la GUI, en donde el conjunto de representaciones modificado comprende el nuevo conjunto de representaciones alternativas.
11. El método de la reivindicación 10, en donde dicha visualización de la GUI comprende mostrar la GUI y marcar un elemento sugerido, en donde la entrada de usuario es una confirmación del elemento sugerido.
12. El método de la reivindicación 1,
en donde el conjunto de representaciones comprende la pluralidad de representaciones alternativas y una o más representaciones alternativas adicionales;
en donde el método comprende además:
obtener un contexto de GUI actual de la GUI; y
en donde dicha aplicación del conjunto de representaciones comprende seleccionar la pluralidad de representaciones alternativas basándose en el contexto de GUI y aplicar únicamente la pluralidad de representaciones alternativas sin aplicar la una o más representaciones alternativas adicionales.
13. El método de la reivindicación 1, en donde el elemento de GUI se selecciona de un grupo que consiste en una casilla de verificación, un botón de clic, un botón de radio, una lista desplegable, un botón desplegable, un botón de alternancia, un campo de texto, un selector de fecha y hora, un campo de búsqueda, una ruta de navegación, una paginación, una etiqueta, un control deslizante, un icono, un carrusel de imágenes, una notificación, una barra de progreso, una información sobre herramientas, un cuadro de mensaje, una ventana modal, un widget, una barra de menú, una pestaña, una tabla, un elemento de imagen, una etiqueta y un acordeón.
14. El método de la reivindicación 1,
en donde el conjunto de representaciones comprende un conjunto de representaciones alternativas, en donde el conjunto de representaciones alternativas comprende la pluralidad de representaciones alternativas y al menos una representación alternativa más; y
en donde dicha aplicación (230, 318) del conjunto de representaciones comprende determinar un subconjunto del conjunto de representaciones alternativas a aplicar en la GUI, en donde el subconjunto consiste en la pluralidad de representaciones alternativas, por lo que dicha aplicación aplica selectivamente solo una porción de representaciones alternativas disponibles.
15. Un producto de programa informático que comprende un medio de almacenamiento legible por ordenador no transitorio que retiene instrucciones de programa, instrucciones de programa que cuando se leen por un procesador, hacen que el procesador realice lo siguiente:
Obtener (200) una selección de un elemento de interfaz gráfica de usuario, GUI;
Obtener (210, 310) un conjunto de representaciones del elemento de GUI, en donde el conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI;
Aplicar (230, 318) el conjunto de representaciones para identificar el elemento de GUI en una GUI de un programa, en donde dicha aplicación del conjunto de representaciones comprende, para cada representación de la pluralidad de representaciones alternativas, aplicar independientemente cada representación para identificar uno o más elementos de GUI que corresponden a cada representación; y
en respuesta a determinar (240) que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener (250, 350) un conjunto de representaciones modificado, en donde dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido debido a una representación alternativa de la pluralidad de representaciones alternativas, en donde el conjunto de representaciones modificado se obtiene eliminando (260) la representación alternativa del conjunto de representaciones, por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona un resultado definitivo.
16. El producto de programa informático de la reivindicación 15, en donde dicha obtención (210, 310) del conjunto de representaciones comprende aplicar un modelo predictivo para seleccionar la pluralidad de representaciones alternativas para el conjunto de representaciones de un conjunto de representaciones alternativas; en donde el modelo predictivo se entrena basándose en elementos de GUI y representaciones alternativas de los mismos.
17. El producto de programa informático de la reivindicación 15, en donde dicha obtención (250, 350) del conjunto de representaciones modificado comprende aplicar un modelo predictivo para seleccionar eliminar la representación alternativa del conjunto de representaciones, en donde el modelo predictivo se entrena basándose en datos que comprenden modificaciones manuales a conjuntos de representaciones.
18. Un aparato que comprende un procesador y una memoria acoplada, estando adaptado el procesador para realizar las etapas de:
Obtener (200) una selección de un elemento de interfaz gráfica de usuario, GUI;
obtener (210, 310) un conjunto de representaciones del elemento de GUI, en donde el conjunto de representaciones comprende una pluralidad de representaciones alternativas, cada una de las cuales proporciona una manera de identificar el elemento de GUI en las GUI;
aplicar (230, 318) el conjunto de representaciones para identificar el elemento de GUI en una GUI de un programa, en donde dicha aplicación (230, 318) del conjunto de representaciones comprende, para cada representación de las representaciones alternativas, aplicar independientemente cada representación para identificar uno o más elementos de GUI que corresponden a cada representación; y
en respuesta a determinar (240) que dicha aplicación del conjunto de representaciones proporciona un resultado indefinido, obtener (250, 350) un conjunto de representaciones modificado, en donde dicha aplicación (230, 318) del conjunto de representaciones proporciona el resultado indefinido debido a una representación alternativa de la pluralidad de representaciones alternativas, en donde el conjunto de representaciones modificado se obtiene eliminando (260) la representación alternativa del conjunto de representaciones, por lo que aplicar el conjunto de representaciones modificado en la GUI del programa proporciona un resultado definitivo.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/IL2019/050475 WO2020222219A1 (en) | 2019-04-30 | 2019-04-30 | Gui element acquisition using a plurality of alternative representations of the gui element |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES3035135T3 true ES3035135T3 (en) | 2025-08-29 |
Family
ID=70223385
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES19927556T Active ES3035135T3 (en) | 2019-04-30 | 2019-04-30 | Gui element acquisition using a plurality of alternative representations of the gui element |
Country Status (7)
| Country | Link |
|---|---|
| US (4) | US10620975B1 (es) |
| EP (1) | EP3963441B1 (es) |
| JP (1) | JP7386889B2 (es) |
| AU (1) | AU2019443684B2 (es) |
| ES (1) | ES3035135T3 (es) |
| IL (1) | IL287314B2 (es) |
| WO (1) | WO2020222219A1 (es) |
Families Citing this family (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021053660A1 (en) | 2019-09-19 | 2021-03-25 | Walkme Ltd. | Improving acquisition process of gui elements using user input |
| US20210349430A1 (en) | 2020-05-11 | 2021-11-11 | UiPath, Inc. | Graphical element search technique selection, fuzzy logic selection of anchors and targets, and/or hierarchical graphical element identification for robotic process automation |
| US11748069B2 (en) | 2020-07-07 | 2023-09-05 | UiPath, Inc. | User interface (UI) descriptors, UI object libraries, UI object repositories, and UI object browsers for robotic process automation |
| US11941416B2 (en) * | 2020-07-31 | 2024-03-26 | Google Llc | Platform independent lightweight user interface framework for glanceable surfaces |
| US11373005B2 (en) | 2020-08-10 | 2022-06-28 | Walkme Ltd. | Privacy-preserving data collection |
| US11449414B2 (en) | 2020-08-26 | 2022-09-20 | Spirent Communications, Inc. | Mapping test parameter data elements during heterogeneous component-based testing in a portable automation framework in both API mode and UI mode |
| US11269712B1 (en) | 2020-08-26 | 2022-03-08 | Spirent Communications, Inc. | Customized categorial error handling framework for heterogeneous component-based testing in a portable automation framework |
| US12013777B2 (en) * | 2020-08-26 | 2024-06-18 | Spirent Communications, Inc. | Controlling heterogeneous component-based testing in a portable automation framework with test scripts in both API mode and UI mode |
| US11216347B1 (en) | 2020-08-26 | 2022-01-04 | Spirent Communications, Inc. | Automatically locating resources using alternative locator expressions during heterogeneous component-based testing in a portable automation framework |
| US11310680B2 (en) | 2020-08-26 | 2022-04-19 | Spirent Communications, Inc. | Reusing provisioned resources during heterogeneous component-based testing in a portable automation framework |
| US11573889B2 (en) * | 2020-11-10 | 2023-02-07 | Micro Focus Llc | Using graphical image analysis for identifying image objects |
| US11200073B1 (en) | 2020-11-20 | 2021-12-14 | UiPath, Inc. | Automatic anchor determination and target graphical element identification in user interface automation |
| US11520690B2 (en) | 2021-02-08 | 2022-12-06 | Walkme Ltd. | Automated testing of walkthroughs |
| US11922191B1 (en) * | 2021-06-01 | 2024-03-05 | Amazon Technologies, Inc. | Identification of missing content features in rendered user interfaces |
Family Cites Families (43)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3168829B2 (ja) * | 1993-10-30 | 2001-05-21 | 富士ゼロックス株式会社 | 検索式作成支援システム |
| US5583983A (en) * | 1994-11-17 | 1996-12-10 | Objectware, Inc. | Multi-platform object-oriented software development and deployment system |
| US5727129A (en) * | 1996-06-04 | 1998-03-10 | International Business Machines Corporation | Network system for profiling and actively facilitating user activities |
| US6407753B1 (en) * | 1999-05-04 | 2002-06-18 | International Business Machines Corporation | System and method for integrating entities via user-interactive rule-based matching and difference reconciliation |
| US7032229B1 (en) * | 2001-06-04 | 2006-04-18 | Palmsource, Inc. | Automatic tracking of user progress in a software application |
| EP1769319A4 (en) * | 2004-06-02 | 2010-03-03 | Open Text Corp | SYSTEMS AND METHODS FOR DYNAMIC MENUS |
| US7487177B2 (en) * | 2004-11-08 | 2009-02-03 | Sap Aktiengesellschaft | Set identifiers for objects |
| US7752077B2 (en) * | 2005-01-21 | 2010-07-06 | Amazon Technologies, Inc. | Method and system for automated comparison of items |
| US7395456B2 (en) * | 2005-08-17 | 2008-07-01 | Microsoft Corporation | Query-based identification of user interface elements |
| US7912801B2 (en) * | 2007-05-31 | 2011-03-22 | Red Hat, Inc. | Method and apparatus to define a ruleflow |
| US8041746B2 (en) * | 2007-10-30 | 2011-10-18 | Sap Ag | Mapping schemas using a naming rule |
| JP5413198B2 (ja) * | 2007-11-21 | 2014-02-12 | 日本電気株式会社 | ユーザインタフェース認識装置、ユーザインタフェース認識方法およびプログラム |
| EP2105837B1 (en) * | 2008-02-27 | 2018-08-15 | Accenture Global Services Limited | Test script transformation analyzer with change guide engine |
| US8533664B2 (en) * | 2009-01-07 | 2013-09-10 | Oracle International Corporation | Method and system to automatically generate GUI object addressing queries |
| US9760347B2 (en) * | 2009-01-07 | 2017-09-12 | Oracle International Corporation | Method and system to identify GUI objects for non-markup-language-presented applications |
| WO2011062597A1 (en) * | 2009-11-23 | 2011-05-26 | Hewlett-Packard Development Company, L.P. | System and method for object relationship identification in a user interface |
| US10095485B2 (en) * | 2009-12-29 | 2018-10-09 | International Business Machines Corporation | Analyzing objects from a graphical interface for standards verification |
| JP5408623B2 (ja) * | 2010-02-17 | 2014-02-05 | 株式会社日立製作所 | 検索式提供方法、プログラム、及び、検索式提供システム |
| US9262396B1 (en) * | 2010-03-26 | 2016-02-16 | Amazon Technologies, Inc. | Browser compatibility checker tool |
| CN102207857B (zh) * | 2010-03-29 | 2014-08-27 | 日电(中国)有限公司 | Gui元素识别方法、装置及系统 |
| US9460232B2 (en) * | 2010-04-07 | 2016-10-04 | Oracle International Corporation | Searching document object model elements by attribute order priority |
| US9424236B2 (en) * | 2011-04-26 | 2016-08-23 | Oracle International Corporation | Filtered Stylesheets |
| EP2771874A4 (en) | 2011-10-24 | 2015-07-15 | Walkme Ltd | CALLING UP OF SCRIPTURES TUTORIALS |
| US8655913B1 (en) * | 2012-03-26 | 2014-02-18 | Google Inc. | Method for locating web elements comprising of fuzzy matching on attributes and relative location/position of element |
| US9015666B2 (en) * | 2012-07-11 | 2015-04-21 | International Business Machines Corporation | Updating product documentation using automated test scripts |
| JP5885204B2 (ja) * | 2012-11-19 | 2016-03-15 | 日本電信電話株式会社 | ユーザ操作支援方法およびその装置 |
| US20140280165A1 (en) * | 2013-03-15 | 2014-09-18 | Rhapsody International Inc. | Grouping equivalent content items |
| US10990924B2 (en) * | 2013-08-30 | 2021-04-27 | Messagepoint Inc. | System and method for variant content management |
| KR102623157B1 (ko) * | 2014-08-15 | 2024-01-11 | 시드니 니콜 엡스타인 | 현재의 관심에 대해 사용자에게 시각적으로 안내하는 시스템 및 컴퓨터 방법 |
| US10268702B2 (en) * | 2014-08-15 | 2019-04-23 | Sydney Nicole Epstein | Iterative image search algorithm informed by continuous human-machine input feedback |
| US10257592B2 (en) | 2015-03-23 | 2019-04-09 | Smart Tower Systems, Llc | Remote tower monitoring |
| US20170031877A1 (en) * | 2015-07-27 | 2017-02-02 | Adp, Llc | Web Page Design System |
| US9934782B2 (en) | 2015-09-22 | 2018-04-03 | Meshrose Ltd. | Automatic performance of user interaction operations on a computing device |
| US9600401B1 (en) * | 2016-01-29 | 2017-03-21 | International Business Machines Corporation | Automated GUI testing |
| WO2017164856A1 (en) * | 2016-03-23 | 2017-09-28 | Entit Software Llc | Comparable user interface object identifications |
| US10452627B2 (en) * | 2016-06-02 | 2019-10-22 | International Business Machines Corporation | Column weight calculation for data deduplication |
| CN207485608U (zh) | 2017-11-27 | 2018-06-12 | 中节能港建(甘肃)风力发电有限公司 | 一种风力发电机组塔筒空间姿态及形变状态监测装置 |
| CN107939617A (zh) | 2018-01-11 | 2018-04-20 | 浙江中自庆安新能源技术有限公司 | 一种风力发电机组倾覆监测系统和方法 |
| US20190303269A1 (en) * | 2018-03-28 | 2019-10-03 | Layout.io Ltd | Methods and systems for testing visual aspects of a web page |
| US10901879B2 (en) * | 2018-05-02 | 2021-01-26 | TestCraft Technologies LTD. | Method and apparatus for automatic testing of web pages |
| US20190340255A1 (en) * | 2018-05-07 | 2019-11-07 | Apple Inc. | Digital asset search techniques |
| US10949225B2 (en) * | 2019-02-06 | 2021-03-16 | Sap Se | Automatic detection of user interface elements |
| US11074162B2 (en) * | 2019-04-15 | 2021-07-27 | Cognizant Technology Solutions India Pvt. Ltd. | System and a method for automated script generation for application testing |
-
2019
- 2019-04-30 IL IL287314A patent/IL287314B2/en unknown
- 2019-04-30 JP JP2021558769A patent/JP7386889B2/ja active Active
- 2019-04-30 AU AU2019443684A patent/AU2019443684B2/en active Active
- 2019-04-30 EP EP19927556.1A patent/EP3963441B1/en active Active
- 2019-04-30 ES ES19927556T patent/ES3035135T3/es active Active
- 2019-04-30 WO PCT/IL2019/050475 patent/WO2020222219A1/en not_active Ceased
- 2019-06-12 US US16/438,951 patent/US10620975B1/en active Active
- 2019-12-18 US US16/719,182 patent/US10877782B2/en active Active
-
2021
- 2021-10-28 US US17/513,291 patent/US12405809B2/en active Active
-
2025
- 2025-08-05 US US19/290,992 patent/US20250355686A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| IL287314A (en) | 2022-07-01 |
| EP3963441B1 (en) | 2025-06-11 |
| IL287314B1 (en) | 2025-02-01 |
| JP2022530607A (ja) | 2022-06-30 |
| US20200348951A1 (en) | 2020-11-05 |
| JP7386889B2 (ja) | 2023-11-27 |
| AU2019443684A1 (en) | 2021-10-21 |
| US12405809B2 (en) | 2025-09-02 |
| EP3963441A1 (en) | 2022-03-09 |
| WO2020222219A1 (en) | 2020-11-05 |
| EP3963441A4 (en) | 2023-01-11 |
| US20250355686A1 (en) | 2025-11-20 |
| IL287314B2 (en) | 2025-06-01 |
| US10877782B2 (en) | 2020-12-29 |
| AU2019443684B2 (en) | 2022-01-20 |
| US10620975B1 (en) | 2020-04-14 |
| EP3963441C0 (en) | 2025-06-11 |
| US20220050564A1 (en) | 2022-02-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES3035135T3 (en) | Gui element acquisition using a plurality of alternative representations of the gui element | |
| US11720379B2 (en) | Acquisition process of GUI elements using user input | |
| US11194884B2 (en) | Method for facilitating identification of navigation regions in a web page based on document object model analysis | |
| US12483486B2 (en) | System and techniques for intelligent network design | |
| US11544179B2 (en) | Source traceability-based impact analysis | |
| Zhang et al. | Mobile-env: Building qualified evaluation benchmarks for llm-gui interaction | |
| US9959193B2 (en) | Increasing accuracy of traceability links and structured data | |
| US20140310689A1 (en) | System And Method For Embedding Symbols Within A Visual Representation Of A Software Design To Indicate Completeness | |
| Escobar-Velásquez et al. | An empirical study of i18n collateral changes and bugs in guis of android apps | |
| US20160283072A1 (en) | User-interface consistency-checking method, device and program | |
| Ben Khalfallah | CRISP: Clean, Reliable, Integrated Software Process | |
| Metin | Testing of glsp-based web modeling tools | |
| Chandramouli et al. | Insider: Towards breaking down mobile app silos | |
| Vesikkala | Visual regression testing for web applications | |
| Vansjariya | FilmHive Movie App | |
| Qasim | Shortening Testing Time of a Web-based Business Application in Scrum using Automated Testing | |
| Amjiyad Ahsan et al. | EVENTPUB | |
| Metzler et al. | Bachelor Thesis Computer Science | |
| De Barros | Automated Synthetic Exploratory Monitoring of Dynamic Web Sites Using Selenium | |
| Greffier | Practical Playwright Test | |
| Arqués Vall et al. | Web app to integrate, compare and visualize DNA |