2017-06-30 12 views
0

私はpywinautoを使っていますが、GUIアプリケーションでいくつかのテストを自動化しています。いくつかのデータをチェックする必要があるリストボックスがあります。リストボックスラッパーのpywinautoアクセスメソッド

ListBoxWrapper.GetItemFocus 
ListBoxWrapper.ItemCount 
ListBoxWrapper.ItemData 
ListBoxWrapper.ItemTexts 

https://pywinauto.readthedocs.io/en/latest/code/pywinauto.controls.win32_controls.html#pywinauto.controls.win32_controls.ListBoxWrapper

私はこれらのメソッドにアクセスするにはどうすればよい:ListBoxWrapperクラスには、これらのメソッドを持っていますか?

は、ここで私が今まで持っているものだ。 - 私は、アプリケーションのインスタンスを作成し、プログラム を起動するためにそれを使用 - 私はリストボックス

listbox = programwindowspec.child_window(title="abcdefg", control_type="ListItem") 

ためWindowSpecificationインスタンスを持ってここからどのように私はに入手できますかListBoxWrapperクラスのメソッド?

PS:私は、PythonのOOP側の専門家ではないので、plsは私と一緒に

EDITを負担:私は、ウィンドウ上のすべてのコントロールのラッパーを取得するために.children()メソッドを使用し、次いで濾過子供たちからリストボックスを出してください。

window = app.window(handle=w_handle) 
for child in window.children(): 
    if 'List' in child._control_types: 
     print(child) 
     text = child.texts() 
     print(text) 

これは私の目的に役立ちます。しかし、私は_control_typesが 'プライベート'クラス属性だと思っています。クラスの外から直接アクセスできますか?

答えて

0

backend="uia"を使用しているようですが、提供したドキュメントのリンクはbackend="win32"です。これらのバックエンドには2つの異なるラッパーがあります。これはcorrect docs for UIA List* related wrappersです。

control_typechild_window(...)で検索すると正しいと判断されます。 WindowSpecificationのためにあなたはとてもListItemWrapperを作成することができます。

list_item = programwindowspec.child_window(title="abcdefg", control_type="ListItem") 
item_wrapper = list_item.wrapper_object() 

# list all available attributes for a list item wrapper 
print(dir(item_wrapper)) 

を(UIA用)ListViewWrapperを作成するには、(我々はこれらの2つのコントロールタイプに対して同じラッパーを使用WindowSpecificationにcontrol_type="List"またはcontrol_type="DataGrid"を使用する必要があります)。

関連する問題