2017-04-17 28 views
0

私はpywinautoでWindowsの標準カメラアプリを自動化しようとしています。pywinauto動的コントロールが存在するかどうかを検出する

私は正常に存在するコントロールのクリックなどを呼び出すことができますが、私はそれがでますどちらのモードを検出する必要があるので、それはビデオに写真から切り替えたときのカメラアプリは動的にキャプチャボタンを切り替えます。ここで

from subprocess import Popen 
from pywinauto import Desktop 
from pywinauto.application import Application 

# ====== Take a Photo ======= 
# Need to get at the Camera app from desktop as there's multiple processes in the UI 
dlg = Desktop(backend="uia").Camera 
dlgWin = dlg.child_window(title="Camera", class_name="Windows.UI.Core.CoreWindow") 

# This fails: 
#existFlag = dlgWin.child_window(title="Take Photo", control_type="Button").Exists(timeout =2) 

# Take photo, this works if the control exists: 
buttonTakePhoto = dlgWin.child_window(title="Take Photo", control_type="Button") 
buttonTakePhoto.click() 

がコントロールですフォトモードでの構造:

enter image description here

そして、動画モードで:

enter image description here

ウィンドウの子コントロールが存在するかどうかを検出するにはどうすればよいですか?私が見たすべての例では、デスクトップの子としてウィンドウを取得して以来、持っていないアプリケーションインスタンスを使用しています。

答えて

1

気にしないで、私はこれを試してみました誓うが、それは動作します:

buttonTakePhoto.exists()

+1

デフォルトのタイムアウトは5秒です。 timeout = 2は、2秒後にはまだ存在しないため、動作しない可能性があります。しかし、 '.exists()'の代わりに 'buttonTakePhoto.wait( 'visible'、timeout = 5)を使うことをお勧めします。 –

関連する問題