LoginSignup
0
1

スクリーンショットの座標値を取得

Last updated at Posted at 2023-11-21

Web画面のエビデンス取得の自動化の引数に必要な座標値の取得方法を紹介します。何かのお役に立てれば幸いです。

はじめに

スクリーンショットを取得する方法は、Windows + shift + s -> 対象範囲をドラッグでコピーです。
たまに取得する程度なら便利な機能です。
しかし、テストとなると毎回同じことをやるのはいろいろ面倒です。
毎回選択範囲がずれて貼り付けたときに画像サイズが揃わない。
選択範囲を間違えて再度取り直しになる。
tooltipを表示していたつもりが消えていて取り直しになる。
など、ただでさえ時間のかかる作業なのにこういうのが発生すると萎えます。
そこで画像サイズが揃うように座標値を取得するプログラムを書きました。

完成プログラム

#getCoordinteVal.py
from pynput import mouse

# //////////////////////////////////////////////////
# プログラムの説明
#   スクリーンショットの指定範囲の座標を取得
# 実行準備
#   実行ファイルのあるフォルダでpowershellを開く
#   (Python) 実行ファイル名を入力してEnter
# 実行後の画面操作方法
#   1回目のクリックでブラウザを選択
#   2回目のクリックで始点をクリック
#   3回目のクリックで終点をクリック
# //////////////////////////////////////////////////

#指定範囲の座標を取得
left_up_x, left_up_y, right_down_x, right_down_y = [0,0,0,0]
num_press = 0

def main():
    with mouse.Listener(on_click=on_click) as listener:
        listener.join()
    # 範囲の確認
    print(f"{left_up_x} {left_up_y} {right_down_x-left_up_x} {right_down_y-left_up_y}")  
   
def on_click(x, y, button, pressed):
    global left_up_x, left_up_y, right_down_x, right_down_y, num_press
    if pressed:
        # 1回目のクリックはウィンドウの切り替え用で何もしない
        if num_press == 0:
            num_press = 1
        # 2回目のクリックはスクリーンショットを撮る範囲の左上を指定
        elif num_press == 1:
            num_press = 2
            left_up_x, left_up_y = x, y
        # 3回目のクリックはスクリーンショットを撮る範囲の右下を指定して終了
        else:
            right_down_x, right_down_y = x, y
            return False

if __name__ == "__main__":
    main()

▼ 以下で実行

python .\getCoordinteVal.py

▼ 実行結果

315 412 1184 517

このプログラムの使用例

おわりに

ほとんど参考ページのまんまです。。。すみません。

参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1