0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[T-DASH] マウス操作を座標軸をもとに行う with PyAutoGUI

Posted at

Outline

T-DASHでは画面要素を簡単に取得でき、テスト自動化を実現することができる。
ただし、CANVASなどを用いたWEB画面では、要素を特定することが困難である。
その場合、画面上のx,y軸をベースに操作することでテスト自動化を実現することはできる。

ただし、座標軸でテストを行う場合、課題はある

  • 画面解像度が異なる環境で動かなくなることがある
  • ブラウザや、ブラウザのウィンドウサイズによって動かなくなることがある
  • ちょっとしたUI変更で、座標を取り直す必要がある

このように、座標軸を用いることのデメリットを理解したうえで使う必要がある。

技術的な情報

pythonのライブラリ、PyAutoGUIを用いることで実現することができる

主な機能として

  • マウスの操作を座標軸を指定して行うことができる
  • ドラッグ&ドロップを再現することができる
  • キーボード処理、スクリーンショット機能などもある

今回は、マウス操作を主に使用する。

T-DASH

カスタム動作

python ライブラリ

以下スクリプトをlib_pyautogui.pyのファイル名として保存する

@lib_pyautogui.py
#
# reference 
#  https://pyautogui.readthedocs.io/en/latest/index.html
#
#0,0       X increases -->
#+---------------------------+
#|                           | Y increases
#|                           |     |
#|   1920 x 1080 screen      |     |
#|                           |     V
#|                           |
#|                           |
#+---------------------------+ 1919, 1079

import pyautogui
import time

def move_mouse_to(str_x, str_y):
	x = int(str_x)
	y = int(str_y)
	pyautogui.moveTo(x, y)

def click_mouse_left(str_x, str_y):
	x = int(str_x)
	y = int(str_y)
	pyautogui.click(x, y)

def click_mouse_right(str_x, str_y):
	x = int(str_x)
	y = int(str_y)
	pyautogui.click(x, y)

def click_mouse_double(str_x, str_y):
	x = int(str_x)
	y = int(str_y)
	pyautogui.doubleClick(x, y)

def mouse_drag_to(str_x, str_y):
	x = int(str_x)
	y = int(str_y)
	time.sleep(1)
	pyautogui.dragTo(x, y, duration=1.0, button='left')

def mouse_scroll_wheel(str_v,):
	v = int(str_v)
	pyautogui.scroll(v)

①作成したpython scriptを自作ライブラリのフォルダに格納する

②配置後、Libraryの追加を行う
(lib_pyautogui.pyをフォームに入力し、⊕ボタンをクリックする)

image.png

robotframework library

以下設定ファイルを Custom.yamlで保存する

@Custom.yaml
ACT-CAT-CUSTOM-6a8a2f90-b3cc-44c4-aca3-23e8684421de:
  action_category_name: Custom
  icon: ''
  color: '#0ad4bf'
  custom_data:
    file_name: custom
    pip_list:
    - pyautogui
    library_list:
    - lib_pyautogui.py
  actions:
    ACT-CUSTOM-ea69a8c7-f48f-45f5-9924-9e08ec786dd5:
      action_name: マウス左クリック
      action_type: operation
      action_format: x=「設定値1」, y=「設定値2」をマウス左クリック
      action_note: ''
      action_args:
      - value1
      - value2
      action_def:
      - - click_mouse_left
        - ${value1}
        - ${value2}
    ACT-CUSTOM-daa28828-c879-4aa4-878d-df856ccbbf5a:
      action_name: マウス右クリック
      action_type: operation
      action_format: x=「設定値1」,y=「設定値2」でマウス右クリック
      action_note: ''
      action_args:
      - value1
      - value2
      action_def:
      - - click_mouse_right
        - ${value1}
        - ${value2}
    ACT-CUSTOM-3148bab5-cde6-4be4-ae92-93d0c2109bd3:
      action_name: マウスダブルクリック
      action_type: operation
      action_format: x=「設定値1」,y=「設定値2」でマウスダブルクリック
      action_note: ''
      action_args:
      - value1
      - value2
      action_def:
      - - click_mouse_double
        - ${value1}
        - ${value2}
    ACT-CUSTOM-95e80531-00e6-46e5-b268-3d2c7751535b:
      action_name: マウスを動かす
      action_type: operation
      action_format: x=「設定値1」,y=「設定値2」にマウスカーソルを動かす
      action_note: ''
      action_args:
      - value1
      - value2
      action_def:
      - - move_mouse_to
        - ${value1}
        - ${value2}
    ACT-CUSTOM-bcd2fcda-3081-4474-93f6-f9ad4d7c98a1:
      action_name: マウスでドラッグする
      action_type: operation
      action_format: 現在地からx=「設定値1」,y=「設定値2」にマウスドラッグする
      action_note: ''
      action_args:
      - value1
      - value2
      action_def:
      - - mouse_drag_to
        - ${value1}
        - ${value2}
    ACT-CUSTOM-bcba6c5c-1a3e-4c22-a8ef-c7609ecee46e:
      action_name: マウスのホイールをスクロールする
      action_type: operation
      action_format: マウスのホイールを「設定値1」だけスクロールする
      action_note: ''
      action_args:
      - value1
      action_def:
      - - mouse_scroll_wheel
        - ${value1}

次に、Custom.yamlをT-DASHの動作定義 -> カスタム動作 -> カスタム動作をインポート にてインポートし、実際にインポートされた設定内容を開く

以下のように、6つのマウス操作のカスタム関数が作成される。

image.png

テストケース

基本的に、マウス操作を行いたい座標軸x,yを引数に設定する。

image.png

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?