Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “处理”;Windows安全性“;带pywinauto的窗口_Python_Python 3.x_Windows_Pywinauto - Fatal编程技术网

Python “处理”;Windows安全性“;带pywinauto的窗口

Python “处理”;Windows安全性“;带pywinauto的窗口,python,python-3.x,windows,pywinauto,Python,Python 3.x,Windows,Pywinauto,我正在编写一个程序来自动连接到远程桌面连接。因此,直到现在,我成功地启动并运行了应用程序,并将计算机名写入文本框。然后,我可以自动点击提交btn。代码如下: import pywinauto from pywinauto.application import Application app = Application().start("mstsc.exe") computerName = "computer_name" password = "password" app['Dialog']

我正在编写一个程序来自动连接到
远程桌面连接。因此,直到现在,我成功地启动并运行了应用程序,并将
计算机名
写入文本框。然后,我可以自动点击提交btn。代码如下:

import pywinauto
from pywinauto.application import Application

app = Application().start("mstsc.exe")

computerName = "computer_name"
password = "password"

app['Dialog']['Edit'].type_keys(computerName, with_spaces=True)
app['Dialog']['Connect'].click()
这是完成上述所有工作的窗口:

点击
连接
按钮后弹出的下一个东西是
Windows安全
,我需要(自动)输入密码。但是,我不确定python应该如何识别该窗口的控件,尤其是
密码
文本字段:

到目前为止,我试图用它的标题来给它定性,但没有成功:

windowsSecurity = pywinauto.findwindows.find_windows(title_re = r"Windows Security")
------------------------------------- 解决方案-------------------------------------


只是用下面的方法解决了这个问题。首先,我确定了弹出窗口的控件是什么,但在此之前,我会留出一些暂停时间让它出现在屏幕上。其次,使用我识别的控件,我发送键并发送click命令。下面是我通过dlg.print\u ctrl\u ids()获得的控件列表

|| Edit-“”(L656,T323,R1100,B371)| |[姓氏,姓名编辑”,“编辑]| |子窗口(auto_id=“PasswordField_2”,control_type=“Edit”)| |

computerName = "computer"
password = "password"
app = pywinauto.application.Application(backend="uia")
app.start('mstsc.exe')

dlg = app.window(title_re="Remote Desktop Connection")
dlg['Edit'].type_keys(computerName)
dlg['Connect'].click()

time.sleep(5)

if dlg.child_window(title="Windows Security",control_type="Window").exists():

    windows_security = dlg.child_window(title="Windows     Security",control_type="Window")
    dlg['PasswordField_2'].type_keys(password)    
    dlg.child_window(auto_id='OkButton').click_input()
else:
    print("Wait time exceeded")
computerName = "computer"
password = "password"
app = pywinauto.application.Application(backend="uia")
app.start('mstsc.exe')

dlg = app.window(title_re="Remote Desktop Connection")
dlg['Edit'].type_keys(computerName)
dlg['Connect'].click()

time.sleep(5)

if dlg.child_window(title="Windows Security",control_type="Window").exists():

    windows_security = dlg.child_window(title="Windows         Security",control_type="Window")
    dlg['PasswordField_2'].type_keys(password)    
    dlg.child_window(auto_id='OkButton').click_input()
else:
    print("Wait time exceeded")

只是用下面的方法解决了这个问题。首先,我确定了弹出窗口的控件是什么,但在此之前,我会留出一些暂停时间让它出现在屏幕上。其次,使用我识别的控件,我发送键并发送click命令。下面是我通过dlg.print\u ctrl\u ids()获得的控件列表

|| Edit-“”(L656,T323,R1100,B371)| |[姓氏,姓名编辑”,“编辑]| |子窗口(auto_id=“PasswordField_2”,control_type=“Edit”)| |

computerName = "computer"
password = "password"
app = pywinauto.application.Application(backend="uia")
app.start('mstsc.exe')

dlg = app.window(title_re="Remote Desktop Connection")
dlg['Edit'].type_keys(computerName)
dlg['Connect'].click()

time.sleep(5)

if dlg.child_window(title="Windows Security",control_type="Window").exists():

    windows_security = dlg.child_window(title="Windows     Security",control_type="Window")
    dlg['PasswordField_2'].type_keys(password)    
    dlg.child_window(auto_id='OkButton').click_input()
else:
    print("Wait time exceeded")
computerName = "computer"
password = "password"
app = pywinauto.application.Application(backend="uia")
app.start('mstsc.exe')

dlg = app.window(title_re="Remote Desktop Connection")
dlg['Edit'].type_keys(computerName)
dlg['Connect'].click()

time.sleep(5)

if dlg.child_window(title="Windows Security",control_type="Window").exists():

    windows_security = dlg.child_window(title="Windows         Security",control_type="Window")
    dlg['PasswordField_2'].type_keys(password)    
    dlg.child_window(auto_id='OkButton').click_input()
else:
    print("Wait time exceeded")

请将您的解决方案作为答案发布并接受。没关系,它会告诉别人问题已经解决了。@VasilyRyabov我一直在寻找,只是觉得看起来像蛇在吃自己的尾巴。)谢谢!