使用pywinauto查找GUI元素

时间:2015-03-20 23:18:09

标签: python user-interface automation pywinauto

我正在尝试pywinauto的第一件事。 现在我想使用print_control_identifiers()但是我得到了错误,但是我编写了代码 - 我无法获得有关GUI对象的任何信息。 我已经尝试通过swapy生成代码 - 有很多生成的代码,但没有成功。

到目前为止,这是我的代码:

import getpass, fnmatch

from pywinauto import application

currentUser = getpass.getuser()

if fnmatch.fnmatch(currentUser, "axe"):
    pwa_app = application.Application()
    w_handle = application.findwindows.find_windows(title=u'Login - 0.9.347', class_name='WindowsForms10.Window.8.app.0.141b42a_r11_ad1')[0]
    window = pwa_app.window_(handle=w_handle)
    window.SetFocus()
    ctrl = window['Log In']
    ctrl.Click()


else:
    print "You need admin rights for that action"

你能告诉我,我需要在哪里使用print_control_identifiers()吗? 您是否有其他更新的GUI自动化框架?

2 个答案:

答案 0 :(得分:1)

PrintControlIdentifiers()对顶级窗口很有用。如果window是顶级窗口规范,则只需调用

window.PrintControlIdentifiers()

 pwa_app.Window_(title=u'Login - 0.9.347', top_level_only=True).PrintControlIdentifiers()

答案 1 :(得分:0)

一些例子:

Swapy很适合识别属性。此外,pywinauto给出的示例非常有用。 资料来源:https://pywinauto.googlecode.com/hg/pywinauto/docs/getting_started.html

from pywinauto import application

app = application.Application.Start("Notepad.exe")
app.Notepad.print_control_identifiers()
app.Notepad.MenuSelect("Edit->Replace")
app.Replace.print_control_identifiers()

来自pywinauto导入应用程序

from pywinauto import application
app = application.Application()
app.Start("Notepad.exe")
Wnd_Main = app.window_(title_re=".*Notepad")
Wnd_Main.MenuSelect("File->Save")

Wnd_Save = app.window_(title_re="Save As")
Wnd_Save.Edit1.SetEditText("Hello World.txt")