xautomation自動マウス&キーボード操作マニュアル

前回に続いて、xautomationによるマウス&キーボードの操作方法を記します。

それとブラウザ・Iceweasel(Firefox)を利用して、とあるサイトからファイルをダウンロードしてくるスクリプトを紹介します。



リンク集

xautomation

  • Linux(Ubuntu/Debian)でのGUI操作自動化
  • # man xte
  • # man xmousepos

  • Gnome デスクトップ キーボード操作

  • LinuxMania: キーボードショートカット集(Fedora,Ubuntu,CentOS)
  • Ubuntu 7.10のGNOMEデスクトップで使えるキーボードショートカット

  • Iceweasel(Firefox) キーボード操作

  • キーボードショートカット操作方法 – Firefoxヘルプ
  • キーボードで Windows を操作する Firefox キーボードショートカット

  • ディスプレイ番号について

    ディスプレイ番号については前回記載したので割愛します。

    xmousepos コマンド

    返り値は X Y U V の形式でマウスカーソルのウィンドウ位置を返します。

  • X Y はデスクトップ左上角からの絶対値です
  • U V はカーソルの真下にあるウィンドウの左上角から見た絶対値です

  • なので、(X-U, Y-V)は真下ウィンドウの左上角の絶対位置を表します。

    xte コマンド

    man xte の表示に補足する形で説明します。

    key k

    Press and release key k キーを押して離します。

    keydown k

    Press key k down キーを押しっぱなしにします。

    keyup k

    Release key k キーを離します。

    str string

    Do a bunch of key X events for each char in string
    フォーカス位置に文字列を入力します。

    mouseclick i

    Click mouse button i マウスボタンを押して離します。i の値は以下のように対応しています。ダブルクリックは1を2回で実現します。
  • i=1 : 左クリック
  • i=2 : ホイールクリック
  • i=3 : 右クリック

  • mousemove x y

    Move mouse to screen position x, y 絶対位置へ移動します。

    mousermove x y

    Move mouse relative from current location by x, y 相対的に移動します。マイナス値の指定で左や上へ移動可能です。

    mousedown i

    Press mouse button i down マウスボタンを押しっぱなしにします。

    mouseup i

    Release mouse button i マウスボタンを離します。

    sleep x

    Sleep x seconds

    usleep x

    Usleep x microseconds

    利用できるキー

    基本

  • [0-9]
  • [a-z]
  • 各種記号
  • [F1-F12]

  • 固有

  • Return
  • BackSpace
  • Home End
  • Left Up Right Down
  • Page_Up Page_Down
  • Tab Escape Delete
  • Shift_L Shift_R
  • Control_L Control_R
  • Meta_L Meta_R
  • Alt_L Alt_R
  • Multi_key

  • スクリプト例

    ブラウザを起動してページ遷移し、ファイルを保存する例です。実行する前にIceweaselのショートカットを作成しておきます。

    実行して確認します。VNC Viewerで見ていると、ブラウザが立ち上がって、ページ遷移して、ダウンロードして、お片づけしてくれます。

    ブラウザを閉じるにも色々手段があり、カーソルを動かして×ボタンを押すよりは Ctrl+Q の方が断然正しいですし、フォーカスのリンク先をダウンロードするにも、Enterを押してから色々選んで保存したり、右クリックして(K)を押して名前をつけて保存に進むよりも、Alt+Enter の方がシンプルです。

    上記例ではブラウザの起動をマウスカーソルで行なっていますが、直接コマンドで起動した方が安定しそうです。




    なんでもできてしまう反面、いかに確実性のある内容にするか、デザインやメニュー変更に対してどう耐性をつけるか、例外検知はどうするか、といったことが作り手のセンスにかかってきます。

    そうそう採用する機会はないと思いますが、WebScrapingと合わせて利用場面を選択すると、より複雑な要件を満たしたり、汎用性を高くできるのではないでしょうか。