PyAutoGUI等Pythonライブラリによる自動化支援
- 20. statsmodels.formulaデモ:プログレスバーの自動テスト
#プログレスバーの進捗の回帰分析結果を取得
def analysis_trend(time, data):
trend_data = pd.DataFrame([time, data]).T
trend_data.columns = ["time", "progress"]
result = sm.ols(formula = "progress ~ np.log(time)", data=trend_data).fit()
return result.params
class TestProgressBar(unittest.TestCase):
def test_progress_bar(self):
#処理高速化のため、GUI操作対象の領域を特定してそこだけ操作するようにする
target_area = pyautogui.locateOnScreen('target_area.png')
target_region = location_to_region(target_area)
#プログレスバーの開始と終了の座標および長さを取得(進捗の取得のため)
start_position = pyautogui.locateOnScreen('progress_start.png', grayscale=True, region=target_region)
end_position = pyautogui.locateOnScreen('progress_end.png', region=target_region)
length = end_position[0] - start_position[0]
#プログレスバー 開始操作
position = pyautogui.locateCenterOnScreen('start_button.png', region=target_region)
pyautogui.click(transform_coord(position))
(続く)
- 21. statsmodels.formulaデモ:プログレスバーの自動テスト
(続き)
#プログレスバー進捗取得
progress_pos = []
progress_time = []
start_time = time.time()
time.sleep(1)
while True:
position = pyautogui.locateCenterOnScreen('progress_current.png', region=target_region)
if position == None:
break
progress_pos.append((position[0] - start_position[0]) * 100 / length)
progress_time.append(time.time() - start_time)
#モデルとの合致性確認
result = analysis_trend(progress_time, progress_pos)
self.assertTrue(result[0] < 20)
self.assertTrue(result[1] > 50 and result[1] < 100)
今回のモデル:progress_pos= result[1]×log(progress_time)+result[0]