¿Cómo puedo abrir automáticamente una URL en Firefox y hacer clic en una posición específica de la página?


1

Me gustaría ejecutar Firefox automáticamente al iniciar sesión. Posteriormente , me gustaría ir a la página de mi ISP y hacer clic en el botón de inicio de sesión, todo hecho automáticamente.

No necesito ingresar la contraseña, ya que está almacenada en el navegador.

Estoy usando Ubuntu 12.04. ¿Es posible este tipo de automatización?



Vea la pregunta duplicada vinculada. Lo que realmente desea es que la GUI se inicie, luego inicie sesión y Ubuntu iniciará las aplicaciones GUI necesarias al iniciar sesión en el sistema. Así funciona el sistema. Las aplicaciones de línea de comandos pueden usar prácticamente el mismo patrón. Sin embargo, hay varias variaciones. Ver la publicación vinculada
Sergiy Kolodyazhnyy

Pero, ¿cómo puedo hacer que mi bowser sea redirigido a un sitio e inicie sesión automáticamente? Solo hay respuestas sobre la ejecución de programas en el inicio del sistema
sysadmincrispy

Bueno, ¿cómo abrir un navegador web desde la línea de comandos? firefox google.com, ^ _ ^ fácil así de simple. Use eso como un comando para agregar al inicio.
Sergiy Kolodyazhnyy

Si. Eso es muy simple, pero cómo abrir un sitio y proporcionar detalles de inicio de sesión y hacer que inicie sesión automáticamente.
sysadmincrispy

Respuestas:


3

Escandalosamente sucio, pero funciona perfectamente

... es el guión a continuación.

Probé que se ejecute Firefox, abriendo el sitio AsUbuntu, a continuación, de forma automática , pulse en el enlace para abrir la página de perfil. Dado que su contraseña se almacena en su navegador, en su caso presionar el botón es suficiente para iniciar sesión.

Cómo funciona en la práctica

15 segundos después de iniciar sesión (su cuenta de usuario de Ubuntu), el script:

  • abre firefox
  • espera a que aparezca la ventana
  • se mueve a la url que definiste
  • mueve el mouse a las coordenadas del botón y presiona el botón

La secuencia de comandos

#!/usr/bin/env python
import subprocess
import time

# --- set the link below
url = "http://askubuntu.com"
# --- set the mouseposition to click on below
xmouse = 858; ymouse = 166
# --- don't change anything below

appcommand = ["firefox", url]

def run(cmd):
    subprocess.Popen(cmd)
    time.sleep(0.2)

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def run_firefox():
    run(appcommand)
    while True:
        time.sleep(1)
        try:
            pid = get(["pgrep", "firefox"])
        except subprocess.CalledProcessError:
            pass
        else:
            time.sleep(0.1)
            w = [l.split()[0] for l in get(["wmctrl", "-lp"]).splitlines() if pid in l][0]
            break
    return w

w = run_firefox()

cmd1 = ["xdotool", "windowsize", w, "100%", "100%"]
cmd2 = ["xdotool", "mousemove", str(xmouse), str(ymouse)]
cmd3 = ["xdotool", "click", "1"]

for cmd in [cmd1, cmd2]:
    run(cmd)
time.sleep(3)
run(cmd3)

Como instalar

  • El script necesita ambos wmctrlyxdotool

    sudo apt-get install xdotool wmctrl
  • Copie el script en un archivo vacío, seguro como run_login.py

  • Ahora la parte más complicada:

    • abra su navegador vaya a la página para iniciar sesión
    • coloque el mouse sobre el botón a presionar (no presione)
    • presione Ctrl+ Tpara abrir una terminal
    • escribe el comando xdotool getmouselocation
    • lea las coordenadas y configúrelas en la sección principal del guión:


      ingrese la descripción de la imagen aquí

      xmouse = 856; ymouse = 165
    • configura la url de tu página de inicio de sesión:

      url = "http://askubuntu.com"
  • Prueba: ejecútelo (sin la ventana ff abierta) con el comando:

    python /path/to/run_login.py
  • Si todo funciona bien, agréguelo a Aplicaciones de inicio: Tablero> Aplicaciones de inicio> Agregar. Agrega el comando:

    /bin/bash -c "sleep 15 && python /path/to/run_login.py"

Nota IMPORTANTE

Dado que se hace clic en el botón en la página por sus coordenadas , solo funcionará mientras la distribución de la página no cambie. En caso de cambios, debe redefinir la ubicación, como se establece en el encabezado del script.


Además, si OP desea escribir nombre de usuario / contraseña, entonces pueden usarxdotool type 'username' key Tab type 'password'
UniversallyUniqueID

@BharadwajRaju No estoy seguro de lo que significa "También" (solo veo un comentario), pero ¿cómo podría sugerir que xdotoolimprima la contraseña? Eso implica almacenar la contraseña en algún lugar en texto plano. ¡Tan peligroso como se pone!
Jacob Vlijm

1
@sysadmincrispy, por supuesto, hay tutoriales como este: tutorialspoint.com/python , pero la mayoría de estos tutoriales comienzan con una explicación textual extensa. Horrible. Comencé con un tutorial sorprendentemente fácil, pero desafortunadamente ya no puedo encontrarlo. La mejor manera (para mí) era establecer un objetivo simple para un script y utilizar SO ampliamente para descubrir cómo lograrlo. Una vez que se realiza el primer inicio, todo se vuelve más fácil. Tenga en cuenta que la secuencia de comandos se escribió en python, pero también podría estar en bash; Muchos de los comandos son llamadas al sistema, ejecutadas mediante subprocess.
Jacob Vlijm

1
... Python, sin embargo, tiene la ventaja de ser fácil de producir soluciones rápidamente y, de hecho, su legibilidad.
Jacob Vlijm

1
@sysadmincrispy El que aprendí fue: Aprender Python de la manera difícil (para Python 2) y algunos dicen que Dive Into Python (para Python 3) también es bueno.
UniversallyUniqueID
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.