Como posso abrir automaticamente um url no firefox e clicar em uma posição específica na página?

1

Gostaria de executar automaticamente o Firefox no login. Posteriormente , eu gostaria de ir para a página do meu provedor e clicar no botão de login, tudo feito automaticamente.

Eu não preciso digitar a senha, pois ela está armazenada no navegador.

Estou usando o Ubuntu 12.04. Esse tipo de automação é possível?

    
por sysadmincrispy 27.06.2016 / 04:42

1 resposta

3

Escandalosamente sujo, mas trabalhando perfeitamente

... é o script abaixo.

Eu testei para rodar o firefox, abrindo o site do AsUbuntu, então automaticamente pressione o link para abrir minha página de perfil. Como sua senha é armazenada no seu navegador, no seu caso, pressionar o botão é suficiente para efetuar o login.

Como funciona na prática

15 segundos após o login (sua conta de usuário do Ubuntu), o script:

  • abre o firefox
  • aguarda a exibição da janela
  • muda para o URL que você definiu
  • move o mouse para as coordenadas do botão e pressiona o botão

O script

#!/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 configurar

  • O script precisa dos dois wmctrl e xdotool

    sudo apt-get install xdotool wmctrl
    
  • Copie o script em um arquivo vazio, como run_login.py

  • Agora a parte mais complicada:

    • abra o navegador e vá para a página para fazer login
    • coloque o mouse sobre o botão a ser pressionado (não pressione)
    • pressione Ctrl + T para abrir um terminal
    • digite o comando xdotool getmouselocation
    • leia as coordenadas e defina-as na seção principal do script:



      xmouse=856;ymouse=165
    • definaaURLdasuapáginadelogin:

      url="http://askubuntu.com"
      
  • Teste-o (sem a janela ff aberta) pelo comando:

    python /path/to/run_login.py
    
  • Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

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

Nota importante

Como o botão é clicado na página por suas coordenadas , ele funcionará apenas enquanto o pagelayout não estiver alterado. Em caso de alterações, você precisa redefinir a localização, conforme definido no cabeçalho do script.

    
por Jacob Vlijm 27.06.2016 / 13:26