我尝试使用python来运行多个应用程序。 目前,我可以打开第一个应用程序并使用工具栏打开另一个应用程序。
import pywinauto
import os
os.startfile("Path")
app = pywinauto.application.Application(backend="uia")
app.connect(path="path")
app.top_window().descendants(control_type="MenuBar")
app_menu = app.top_window().descendants(control_type="MenuBar")[1]
app_menu.items()
appmenu = app.top_window().descendants(control_type="MenuBar")[1]
mi = appmenu.items()[3]
mi.set_focus()
mi2 = app.top_window().descendants(control_type="MenuItem")[1]
mi2.set_focus()
mi2.select()
` 这项工作到目前为止。当我试图获得对这个新应用程序的控制时,我得到一个错误。 TypeError:connect()缺少1个必需的位置参数:' self' 我用来连接第二个应用程序的代码:
app2 = pywinauto.application.Application(backend="uia")
app2= pywinauto.application.Application.connect(path="path2")
我如何连接到第二个应用程序?
答案 0 :(得分:3)
你有一个错误:
app2 = pywinauto.application.Application(backend="uia")
app2= pywinauto.application.Application.connect(path="path2")
应该是:
app2 = pywinauto.application.Application(backend="uia")
# Don't forget to start the 'path2' first or use app2.start() instead.
# Or, well, the first Application()'s automation should start it.
# Regardless, you would perhaps have to wait some time before app starts and then connect() will work.
# So put some time.sleep() here or setup a pywinauto's timeout.
app2.connect(path="path2")
就像你为第一次申请做的那样。
引发TypeError是因为您直接从Application类调用connect(),而不是从Application()实例调用。 connect()方法错过了自我'引用作为第一个参数,当您从实例的指针调用方法时自动添加该参数。
这意味着这会产生同样的效果:
app2 = pywinauto.application.Application(backend="uia")
pywinauto.application.Application.connect(app2, path="path2")
请参阅,app2作为第一个(强制性)位置参数传递。这样pywinauto.application.Application.connect()知道应该绑定应用程序窗口的对象(app2)。如果你把它称为app2.connect()它已经获得app2所以不需要传递它。