pyautoguiはキーボード、マウスを自動化するツールです。
退屈なことはpythonに任せようの18章に載っている自動フォームへの入力で、ドロップダウンメニューが選択されない問題がありました。修正することで以下の二つの問題を解消しました。
・ドロップダウンメニューが選択される
・スクロールバーが勝手に操作され、画面が下に下がる現象をなくす
<修正前>
# Source of Wizard Powers欄を選択する
if person[‘source’] == ‘wand’:
pyautogui.typewrite([‘down’, ‘\t‘])
elif person[‘source’] == ‘amulet’:
pyautogui.typewrite([‘down’, ‘down’, ‘\t‘])
elif person[‘source’] == ‘crystal ball’:
pyautogui.typewrite([‘down’, ‘down’, ‘down’, ‘\t‘])
elif person[‘source’] == ‘money’:
pyautogui.typewrite([‘down’, ‘down’, ‘down’, ‘down’, ‘\t‘])
<修正後>
# TODO: Source of Wizard Powers欄を選択する
if person[‘source’] == ‘wand’:
pyautogui.typewrite([‘down’])
elif person[‘source’] == ‘amulet’:
pyautogui.typewrite([‘down’, ‘down’],0.1)
elif person[‘source’] == ‘crystal ball’:
pyautogui.typewrite([‘down’, ‘down’, ‘down’],0.1)
elif person[‘source’] == ‘money’:
pyautogui.typewrite([‘down’, ‘down’, ‘down’, ‘down’],0.1)
pyautogui.typewrite([‘enter’])
time.sleep(1)
pyautogui.typewrite([‘\t‘])
downのあとのenterで選択できます。
pyautogui.typewrite([‘enter’])
そして、インターバル(0.1の部分)を入れて、操作する速度を緩めました。これをしないと間違った項目選択をしてしまうからです。
pyautogui.typewrite([‘down’, ‘down’],0.1)
また、enter入力後、なぜかスクロールバーが操作されるので、スリープを入れて操作されないようにしています。
time.sleep(1)
その他、注意点として送信ボタンの位置情報を入力するとき、最大画面にして、スクロールバーを最上の位置にしておく必要があります。
また、起動してから自動入力が開始されない問題に対しては、ウインドウの更新ボタンで更新しましょう。
これは、スクロールバーが最上の位置じゃないときや、検索欄が表示されていたり、エラーが出ていたり、なにかしら入力されていて、下部にある送信ボタンの位置がずれていることが原因です。1ドットでも送信ボタンがずれたら自動入力されないって、そうとうシビアですね。
自動入力が開始されるトリガーの部分が送信ボタンの位置、色になっているのです。だからうまくいかないことが多いです。
なにかちょっとでも変なことがあったらすぐに動かなくなるのは面倒ですが、動き出してしまえばあとは楽できるかなと。もし自動化させる場合、動き出す条件は、正確に知る必要はありますね。