PDA

Ver la Versión Completa : [ SOLUCIONADO ] Escribir en un formulario web y pulsar un botón web (root)


Caravantes
19/06/13, 00:54:50
Hola. Me interesa conseguir que Tasker escriba algo en un formulario web y pulse el botón de confirmar. Quiero automatizar el proceso de identificarme en la intranet de mi empresa, escribiendo en una página web mi identificativo de usuario y mi contraseña. Lo tengo que hacer a diario y es un poco rollo, así que he pensado: que lo haga Tasker. :sisi1:

Para que lo entendáis mejor, el problema es equivalente al siguiente: hacer que Tasker abra la página del buscador Google (www.google.es), escriba en el recuadro de búsqueda una palabra concreta "mandarina" y luego pulse en el botón que tiene el icono de "la lupa" para hacer la búsqueda. Si lo consigo luego aplicaré la misma solución para la intranet de mi empresa.
319876
Lo primero que hice fue una captura de pantalla para medir las coordenadas en las que normalmente hago las pulsaciones (con el dedo). Lo habitual es medir desde arriba a la izquierda, poniendo primero el desplazamiento a la derecha y luego el desplazamiento hacia abajo. De esa forma las pulsaciones serían (en mi pantalla, con la página de google)
En el centro del cuadro de texto: 324, 515
En el centro del icono-lupa: 712, 515

Y me pongo a hacer la tarea.
1- (Red) Navegar a la URL www.google.es (esto funciona perfecto, abre la página)
2- (Tarea) Esperar 3 segundos (para dar tiempo a que la página se cargue completa, también bien).

Y ahora viene la parte en la que estoy atascado. ¿Cómo hago para "meter" el cursor dentro de la casilla de escritura?

He probado a simular la pulsación en la pantalla con Ejecutar Consola input tap 324 515 . Tras eso debería tener el cursor parpadeando dentro del recuadro, pero eso no ocurre. Creo que el comando no hace nada, o yo no noto que haga nada (más info sobre este input tap en http://www.htcmania.com/showthread.php?p=8670110 ). He cambiado las coordenadas para que el input tap simule una pulsación en la parte superior de la pantalla, 324 194, donde está el rótulo de IMAGENES, pero tampoco veo que haga nada.

También he probado con Ejecutar Consola input keyevent 61 . El código 61 simula una pulsación del tabulador, pero tampoco veo que haga nada, no sé si alguno de los otros códigos me serviría directamente, hay un mogollón de ellos (más info sobre este input keyevent en http://www.htcmania.com/showthread.php?p=8655382 )

Alguna idea? Gracias.

maid450
19/06/13, 07:31:52
Hola Caravantes.
Primero que nada prueba ejecutar en un emulador de terminal "input" solamente (sin el "tap" despues).
Con eso te saldrá una descripción del comando en tu terminal y podrás ver si admite la opción "tap".
Si no lo soporta (aunque por la versión de Android que tienes debería) tendrías que echarle un vistazo a este método (http://www.htcmania.com/showthread.php?t=606720), si si se me ocurren varias cosas que pueden pasar:
- Asegurate que marcas "ejecutar como root" en la acción de ejecutar consola, ya que es necesario para este comando.
- Utiliza la propia opción de mostrar las coordenadas donde toques del sistema operativo (en las opciones de desarrollo del teléfono) en vez de sacar una captura y medirlo ahí, por si acaso los resultados no fueran correctos y estuvieras simulando pulsaciones en ninguna parte. No está de más si tambien usas la opción "mostrar toques en la pantalla" tambien en opciones de desarrollo.

mlesir
19/06/13, 08:15:55
Hola Caravantes. Pues he probado a hacer lo que dices con Google. Yo lo he probado con el trackball de tasker pq no tengo la posibilidad de emular la pulsación directa por q tengo ICS.
El caso es que solo con el navegador dolphin consigo hacerlo. Con este si puedo manejarlo. Para que puedas probar si quieres te dejo una tarea q carga la url de Google (ahí eliges el navegador q quieres usar, esto luego tb lo puedes automatizar con el track). Luego te muestra una escena, que es una pantalla superpuesta con los 4 cursores, intro, pulsar y escribir "clave".
Lo bueno de esto es que puedes probar directamente como funciona e ir haciendo pruebas con los distintos navegadores etc.

Aquí te dejo el enlace a Dropbox para q te descargues el proyecto si quieres

http://db.tt/57VWjiU2

Esta es una captura de lo que sería la escena. Creo q asi se ve claro lo que quiero decir

http://img.tapatalk.com/d/13/06/19/a6a5ysaj.jpg

Cada icono lleva asociado una tarea que no es más que una acción del track: subir, bajar, escribir, etc, menos el intro q es ejecutar consola, "input keyevent 66" marcado ejecutar como root.

Caravantes
19/06/13, 11:48:31
- Asegurate que marcas "ejecutar como root"

Efectivamente, Maid, ese era mi fallo. Marcando esa casilla veo que el input tap funciona.
Luego seguiré con la tarea, y ya os contaré. Gracias.

Caravantes
20/06/13, 00:29:42
Aclaración previa y evidente. Para que esto funcione hay que tener ROOT.

Una vez superado el olvido de marcar la casilla ROOT en las acciones Ejecutar-Consola, el resto de la tarea ha tenido pocas dificultades. La tarea se ejecuta de principio a fin en pocos segundos. Más abajo va la descripción detallada de la tarea, pero adelanto un resumen:

A1 Abrir la web de Google.
A2 Esperar 3 segundos para que la página se cargue completa.
A3 Simular una pulsación en el cuadro de texto
A4 Simular la escritura de la palabra "mandarina"
A5 Simular una pulsación "flecha derecha" para cambiar el foco al botón de la lupa.
A6 Simular la pulsación de la tecla Enter/Intro/Return (sobre el botón de la lupa).
Así acaba la tarea, y aparece la página de resultados de Google para la búsqueda "mandarina". Perfecto.

En A5 intenté primero una simulación de tabulador pero no funcionó como esperaba: en el ordenador el tabulador salta a la casilla u objeto siguiente, pero en el navegador del móvil (chrome) lo que ocurría es que ese tabulador era introducido DENTRO del recuadro de texto. Lo sustituí por una pulsación "flecha derecha" que ha funcionado bien.

Mlesir, he descargado y probado tu proyecto-escena. No es tan automático, requiere intervención humana y por eso creo que es un buen planteamiento para otras ocasiones en que haya que decidir, pero para mi caso que es siempre un texto fijo prefiero el automatismo total. De hecho, voy a asociar la tarea a un perfil que la ejecutará en el momento en que detecte la conexión a la Wifi de la empresa. De este modo el smartphone hará la identificación en la intranet desde el primer momento y tendré conexión de datos todo el tiempo, y todo ello sin intervención mía, incluso sin que me entere de que eso sucede. Es justo lo que quería.

Ahí van los detalles del perfil:

A1: Navegar a una URL [ URL:www.google.es ]
A2: Esperar [ MS:0 Segundos:3 Minutos:0 Horas:0 Días:0 ]
A3: Ejecutar consola [ Comando:input tap 324 515 Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En: Almacenar Errores En: Almacenar Resultado en: ]
A4: Ejecutar consola [ Comando:input text mandarina Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En: Almacenar Errores En: Almacenar Resultado en: ]
A5: Ejecutar consola [ Comando:input keyevent 22 Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En: Almacenar Errores En: Almacenar Resultado en: ]
A6: Ejecutar consola [ Comando:input keyevent 66 Cuenta atrás (segundos):0 Usar Root:Encendido Almacenar Salida En: Almacenar Errores En: Almacenar Resultado en: ]

Más información sobre los procedimientos, en los siguientes mensajes
http://www.htcmania.com/showthread.php?p=8670110
y en
http://www.htcmania.com/showthread.php?p=8655382

Queridos dummies, esto ha sido todo por ahora. :cucu:

mlesir
20/06/13, 01:40:26
Vale no me explique bien. Lo que te deje era para que probaras. Luego claro, para q sea automático haces lo que has hecho. Yo utilizo esta escena para si funciona el track en determinadas pantallas y cuantos arriba, abajo... hay q dar para llegar a donde de quiero, nada más.
Luego ya pongo la tarea correspondiente.
Te lo envié para que probases a ver en que navegador te funcionaba, y para que pudieses probar fácilmente el track.

KchoPrro
21/06/13, 12:23:48
Una pregun sobre la cuestión de este perfil y la opción imput tap. Entiendo que marcas unas coordenadas concretas pero....¿qué pasa si tienes el móvil girado?, las coordinadas no coincidirían, aunque supongo que puedes impedir que rote la pantalla para este perfil.

Saludos!

KchoPrro

maid450
21/06/13, 13:51:23
Una pregun sobre la cuestión de este perfil y la opción imput tap. Entiendo que marcas unas coordenadas concretas pero....¿qué pasa si tienes el móvil girado?, las coordinadas no coincidirían, aunque supongo que puedes impedir que rote la pantalla para este perfil.

Buena observación, en efecto con la pantalla girada las coordenadas donde quieres pulsar no coincidirán y por tanto no funcionará...

Es verdad que se puede impedir que rote facilmente, pero me ha picado la curiosidad a ver si encuentro alguna forma de detectar la orientación de la pantalla en tiempo de ejecución, es decir, averiguar en un momento concreto como está sin recurrir a una variable controlada por perfiles con contexto "cambio de orientación" que consumen demasiado para estar monitorizandolo constantemente solo para un uso de este tipo (precisamente pienso que es por esto que Tasker no incorpora una variable para eso de serie...).

Si hubiese alguna forma (por comando u otras) de averiguar esto se podrían calcular las coordenadas con ambas orientaciones y hacer algo tipo:

Si %orientacion ~ retrato
ejecutar: input tap x1 y1
Si no
ejecutar: input tap x2 y2

KchoPrro
21/06/13, 13:58:38
Buena observación, en efecto con la pantalla girada las coordenadas donde quieres pulsar no coincidirán y por tanto no funcionará...

Es verdad que se puede impedir que rote facilmente, pero me ha picado la curiosidad a ver si encuentro alguna forma de detectar la orientación de la pantalla en tiempo de ejecución, es decir, averiguar en un momento concreto como está sin recurrir a una variable controlada por perfiles con contexto "cambio de orientación" que consumen demasiado para estar monitorizandolo constantemente solo para un uso de este tipo (precisamente pienso que es por esto que Tasker no incorpora una variable para eso de serie...).

Si hubiese alguna forma (por comando u otras) de averiguar esto se podrían calcular las coordenadas con ambas orientaciones y hacer algo tipo:

Si %orientacion ~ retrato
ejecutar: input tap x1 y1
Si no
ejecutar: input tap x2 y2

Es que esto me vendría bien para mi perfil de la música, a fin de cuentas solo precisa pulsar sobre un botón pero enseguida me di cuenta que al girar el móvil todo rotaba y ya no coincidiría nada, de hecho, muchas aplicaciones se reajustan su interface para quedar mejor cuando se giran, por ejemplo el reproductor.

Pero creo que sí, no tanto para detectar la orientación, pero creo que se puede "obligar" a que la pantalla esté orientada de forma que coincidan las coordenadas

Luego, al finalizar el perfil se puede dejar todo como estaba.

Saludos

KchoPrro

maid450
22/06/13, 12:04:53
Conseguido! X-D

El comando dumpsys window | grep mCurConfiguration devuelve una linea que si contiene la palabra "land" es que está en modo apaisado y si en su lugar pone "port" está en modo retrato.
Asi que se puede poner una acción "Script->Ejecutar consola" que ejecute este comando (hay que marcar "Ejecutar como root") y guardamos la salida en una variable (por ejemplo %salida) luego podemos poner:
Si %salida ~ * land *
o
Si %salida ~ * port *

Para ejecutar un código concreto si están en modo apaisado o retrato respectivamente.

Caravantes
25/06/13, 00:44:04
Conseguido! El comando: dumpsys window | grep mCurConfiguration devuelve una linea que si contiene la palabra "land" es que está en modo apaisado y si en su lugar pone "port" está en modo retrato.

Confirmado: lo he probado y eso funciona perfectamente.
Muchas gracias.

maid450
25/06/13, 07:11:22
Confirmado: lo he probado y eso funciona perfectamente.
Gracias por confirmar que funciona en otros terminales, ya que era algo de lo que no estaba del todo seguro :-)

ATaskREADOS
30/10/13, 20:03:22
Subido a la sección de scripts. Enhorabuena y gracias como siempre Maid y Caravantes:

:campeon:

geek1
16/12/14, 22:03:18
vaya tela, ¿como podéis llevar tasker a ese extremo? Me dais miedito, jajajja
¡Enhorabuena!

Caravantes
24/05/18, 23:30:22
Conseguido!
El comando
dumpsys window | grep mCurConfiguration
devuelve una linea que si contiene la palabra "land" es que está en modo apaisado y si en su lugar pone "port" está en modo retrato.
Asi que se puede poner una acción "Script->Ejecutar consola" que ejecute este comando (hay que marcar "Ejecutar como root") y guardamos la salida en una variable (por ejemplo %salida) luego podemos poner:
Si %salida ~ * land *

En un hilo posterior el compañero Willy aporta una solución más sencilla para que una tarea pueda detectar la orientación, y sirve sin root:
Acción > Pantalla > Probar pantalla > Tipo=Orientación
Con el mismo resultado (portrait=retrato, vertical; landscape=paisaje, horizontal) pero sin necesidad de root.
https://www.htcmania.com/showthread.php?p=28840574#post28840574