前提・実現したいこと
pyautoguiを使用して、RPAアプリケーションの開発を行っています。
この時、testだとフリーズするのに、debugだとtestをpassできます。
この挙動の違いはどこから来るのか思い当たることが無いので、
ご存知の方がいらっしゃいましたらご教授願います。
または、どこの挙動が違うかわからなくても回避できる方法がございましたら、
それも知りたいです。
test、debugともに、vscodeのmicrosoft公式拡張機能「Python」によって追加される、
「三角フラスコアイコン」から辿ってアイコンクリックで起動しています。
テスト用のライブラリにはpytestを利用しています。
発生している問題・エラーメッセージ
def WaitWindowLoadWithImgでフリーズしているということまでしかわかりませんでした。
該当のソースコード
テスト対象のモジュールの中でフリーズしている部分です。
py
1def WaitWindowLoadWithImg(nameforimg:str,timeforwait:int,nameforwindow:str,ratioforcut:tuple) -> bool: 2 """ 3 Check if the window is loaded using the image. 4 ---------- 5 6 Parameters: 7 ---------- 8 nameforimg:str 9 Specify the image you want to find by the name of the file. 10 nameforwindow:str 11 Specify the window you want to find by the name. 12 timeforwait:int 13 Specifies the number of times to continue the check every second. 14 ratioforcut: tuple 15 Specifies which range in the Window to check. 16 (leftRatio,topRatio,widthRatio,heightRatio) 17 18 Returns: 19 ---------- 20 bool: Returns true if a window with the specified name is found in time and the same part of the image is found in that window. 21 """ 22 """[summary] 23 24 Raises: 25 WndNotFoundError: [description] 26 27 Returns: 28 [type]: [description] 29 """ 30 pyautogui.moveTo(2,2) 31 shotRatio=None 32 for HowManyTime in range(timeforwait): 33 titles = get_window_titles() 34 if nameforwindow in titles: 35 getrect=GetWindowRectFromName(nameforwindow) 36 shotRatio=CutRectByRatio(Rect=getrect,Ratio=ratioforcut) 37 pos = pyautogui.locateCenterOnScreen(GetImage(nameforimg), region=shotRatio) 38 if pos != None: 39 return True 40 sleep(1) 41 # print(shotRatio) 42 43 pyautogui.screenshot(imageFilename=("img/timeline/"+datetime.datetime.now().strftime('%Y%m%d%H%M%S')+nameforwindow+"-"+nameforimg+".png"),region=shotRatio) 44 raise WndNotFoundError('timeout : "' + GetImage(nameforimg) + '"') 45 return False
こんな感じで使用します。
py
1def test_search(): 2 res=winctrl.WaitWindowLoadWithImg( 3 nameforwindow="検索", 4 timeforwait=20, 5 ratioforcut=(0, 0, 0.5, 0.3), 6 nameforimg="serchresult", 7 ) 8assert res
試したこと
testをするとraise WndNotFoundError
で止まりますが、debugだとスッキリreturn True
してくれてpassするので、
完全に詰みました。testモードで実行するとprint()
も使えないし、ブレークポイントも使えません。私の脳味噌はStackoverflowしました。
補足情報(FW/ツールのバージョンなど)
pipList
1appdirs 1.4.4 2astroid 2.4.2 3atomicwrites 1.4.0 4attrs 20.2.0 5autopep8 1.5.4 6black 20.8b1 7certifi 2020.6.20 8click 7.1.2 9colorama 0.4.3 10cx-Oracle 8.0.1 11iniconfig 1.0.1 12isort 5.5.2 13lazy-object-proxy 1.4.3 14mccabe 0.6.1 15more-itertools 8.5.0 16MouseInfo 0.1.3 17mypy-extensions 0.4.3 18numpy 1.19.2 19packaging 20.4 20pathspec 0.8.0 21Pillow 7.2.0 22pip 20.2.3 23pluggy 0.13.1 24py 1.9.0 25PyAutoGUI 0.9.50 26pycodestyle 2.6.0 27PyGetWindow 0.0.8 28pylint 2.6.0 29PyMsgBox 1.0.8 30pyodbc 4.0.30 31pyparsing 2.4.7 32pyperclip 1.8.0 33PyRect 0.1.4 34PyScreeze 0.1.26 35pytest 6.0.2 36PyTweening 1.0.3 37regex 2020.7.14 38rope 0.17.0 39setuptools 49.6.0.post20200814 40six 1.15.0 41toml 0.10.1 42tqdm 4.49.0 43typed-ast 1.4.1 44typing-extensions 3.7.4.3 45wheel 0.35.1 46wincertstore 0.2 47wrapt 1.12.1 48yapf 0.30.0
vscodeinfo
1バージョン: 1.49.0 (system setup) 2コミット: e790b931385d72cf5669fcefc51cdf65990efa5d 3日付: 2020-09-10T13:22:08.892Z 4Electron: 9.2.1 5Chrome: 83.0.4103.122 6Node.js: 12.14.1 7V8: 8.3.110.13-electron.0 8OS: Windows_NT x64 10.0.18363
condaList
1# Name Version Build Channel 2appdirs 1.4.4 pypi_0 pypi 3astroid 2.4.2 pypi_0 pypi 4atomicwrites 1.4.0 pypi_0 pypi 5attrs 20.2.0 pypi_0 pypi 6autopep8 1.5.4 pypi_0 pypi 7black 20.8b1 pypi_0 pypi 8ca-certificates 2020.6.20 hecda079_0 conda-forge 9certifi 2020.6.20 py38h32f6830_0 conda-forge 10click 7.1.2 pypi_0 pypi 11colorama 0.4.3 pypi_0 pypi 12cx-oracle 8.0.1 pypi_0 pypi 13iniconfig 1.0.1 pypi_0 pypi 14isort 5.5.2 pypi_0 pypi 15lazy-object-proxy 1.4.3 pypi_0 pypi 16mccabe 0.6.1 pypi_0 pypi 17more-itertools 8.5.0 pypi_0 pypi 18mouseinfo 0.1.3 pypi_0 pypi 19mypy-extensions 0.4.3 pypi_0 pypi 20numpy 1.19.2 pypi_0 pypi 21openssl 1.1.1g he774522_1 conda-forge 22packaging 20.4 pypi_0 pypi 23pathspec 0.8.0 pypi_0 pypi 24pillow 7.2.0 pypi_0 pypi 25pip 20.2.3 py_0 conda-forge 26pluggy 0.13.1 pypi_0 pypi 27py 1.9.0 pypi_0 pypi 28pyautogui 0.9.50 pypi_0 pypi 29pycodestyle 2.6.0 pypi_0 pypi 30pygetwindow 0.0.8 pypi_0 pypi 31pylint 2.6.0 pypi_0 pypi 32pymsgbox 1.0.8 pypi_0 pypi 33pyodbc 4.0.30 pypi_0 pypi 34pyparsing 2.4.7 pypi_0 pypi 35pyperclip 1.8.0 pypi_0 pypi 36pyrect 0.1.4 pypi_0 pypi 37pyscreeze 0.1.26 pypi_0 pypi 38pytest 6.0.2 pypi_0 pypi 39python 3.8.5 h60c2a47_7_cpython conda-forge 40python_abi 3.8 1_cp38 conda-forge 41pytweening 1.0.3 pypi_0 pypi 42regex 2020.7.14 pypi_0 pypi 43rope 0.17.0 pypi_0 pypi 44setuptools 49.6.0 py38h32f6830_0 conda-forge 45six 1.15.0 pypi_0 pypi 46sqlite 3.33.0 he774522_0 conda-forge 47toml 0.10.1 pypi_0 pypi 48tqdm 4.49.0 pypi_0 pypi 49typed-ast 1.4.1 pypi_0 pypi 50typing-extensions 3.7.4.3 pypi_0 pypi 51vc 14.1 h869be7e_1 conda-forge 52vs2015_runtime 14.16.27012 h30e32a0_2 conda-forge 53wheel 0.35.1 pyh9f0ad1d_0 conda-forge 54wincertstore 0.2 py38_1003 conda-forge 55wrapt 1.12.1 pypi_0 pypi 56yapf 0.30.0 pypi_0 pypi
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/17 16:33
2020/09/17 22:53
2020/10/20 00:48