본문 바로가기
Software coding skill(python, web등)

pywinauto 9 - popup menu 팝업메뉴 선택

by 호빵님 2020. 2. 17.
반응형

 

자동화프로그램을 만들다가, 여러가지 난관에 봉착하는데, popup menu control로 그중에 하나이다.

메인 다이얼로그에 상단 메뉴는 menu_select를 이용해서 손쉽게 누를 수가 있다. 

하지만, 마우스 오른쪽클릭하고난 뒤에 뜨는 팝업 메뉴는 spy++이나 window spy프로그램으로도 그 핸들 및 특성을 볼 수가 없다. 팝업메뉴 특성상, 마우스가 올려져있는 상태에서만 보이기 때문이다.

 

아래는 github에서의 한 질문답변 예제이다.

 

https://github.com/pywinauto/pywinauto/issues/647

 

Unable to select menu item from popup menu in Sublime Text · Issue #647 · pywinauto/pywinauto

I can automate right click on an empty file opened on sublime. But once I get the menu from the right click I cannot seem to select any of the options like Paste or Open containing folder shown on ...

github.com

 

파이썬 코드 편집프로그램 중 하나인 Sublime text프로그램을 이용한다.

 

처음 실행화면

 

경로와 다이얼로그 타이틀을 나에게 맞게 변경하고, 코드를 실행하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# -*- coding: utf-8 -*-
"""
Created on Mon Feb 17 20:26:06 2020
 
@author: kenro
"""
 
from pywinauto.application import Application 
 
app = Application(backend="win32").start(r"C:\Program Files\Sublime Text 3\sublime_text.exe")
p_sublime = app.window(title_re=".*Sublime Text.*")
#p_sublime.dump_tree()
p_sublime.click_input(button='right')
 
print(app.PopupMenu.wait('ready').menu().items()) # crashed on Py2.7
 
app.PopupMenu.wait('ready').menu().get_menu_path('Paste\tCtrl+V')[0].click_input()
cs

 

빈화면에 마우스 오른쪽 클릭 후 Paste선택됨

 

menu().items()로 메뉴내 아이템들 출력

MenuItem뒤에 써있는 Cut, Copy, Paste, Select All등이 메뉴내 아이템들이다.

 

추가적인 메뉴컨트롤의 메소드들은 아래 링크에 있다.

 

https://pywinauto.readthedocs.io/en/latest/code/pywinauto.controls.menuwrapper.html#pywinauto.controls.menuwrapper.Menu

 

pywinauto.controls.menuwrapper — pywinauto 0.6.8 documentation

Docs » Basic User Input Modules » pywinauto.controls.menuwrapper Edit on GitHub © Copyright 2018, Mark Mc Mahon and Contributors Revision aea0429b. Built with Sphinx using a theme provided by Read the Docs.

pywinauto.readthedocs.io

 

반응형