如何在 Firefox 中自动打开某个 URL 并点击页面上的特定位置?

如何在 Firefox 中自动打开某个 URL 并点击页面上的特定位置?

我想在登录时自动运行 Firefox。随后,我想转到我的 ISP 的页面并单击登录按钮,一切都自动完成。

我不需要输入密码,因为它存储在浏览器中。

我正在使用 Ubuntu 12.04。这种自动化可以实现吗?

答案1

肮脏不堪,但运转正常

...是下面的脚本。

我测试了它运行 Firefox,打开 AsUbuntu 网站,然后自动打开我的个人资料页面的链接。由于您的密码存储在浏览器中,因此,在您的情况下,按下按钮即可登录。

实践中如何运作

登录(您的 Ubuntu 用户帐户)15 秒后,脚本:

  • 打开火狐浏览器
  • 等待窗口出现
  • 移动到你定义的 url
  • 将鼠标移动到按钮的坐标并按下按钮

剧本

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

如何设置

  • 脚本wmctrl需要xdotool

    sudo apt-get install xdotool wmctrl
    
  • 将脚本复制到一个空文件中,并将其保存为run_login.py

  • 现在是最棘手的部分:

    • 打开浏览器,转到登录页面
    • 将鼠标放在要按下的按钮上(不要按)
    • Ctrl+T打开终端
    • 输入命令xdotool getmouselocation
    • 读取坐标并将其设置在脚本的头部部分:


      在此处输入图片描述

      xmouse = 856; ymouse = 165
      
    • 设置你的登录页面的 URL:

      url = "http://askubuntu.com"
      
  • 通过以下命令测试运行它(不打开 ff 窗口):

    python /path/to/run_login.py
    
  • 如果一切正常,请将其添加到启动应用程序:Dash > 启动应用程序 > 添加。添加命令:

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

重要的提示

由于在页面上单击了按钮通过其坐标,它仅在页面布局不变的情况下才有效。如果有变化,您需要重新定义位置,如脚本头部所设置的那样。

相关内容