首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用pywinauto处理"Windows安全“窗口

用pywinauto处理"Windows安全“窗口
EN

Stack Overflow用户
提问于 2020-06-02 09:02:44
回答 1查看 789关注 0票数 0

我正在编写一个程序来自动连接到Remote Desktop Connection。所以,到现在为止,我已经成功地启动并运行了应用程序,并将Computer Name写入文本框。然后,我可以自动点击提交btn。以下是代码:

代码语言:javascript
运行
复制
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()

这是完成上述所有工作的窗口:

点击Connect按钮后弹出的下一件事是Windows Security,在这里我需要输入密码(自动)。但是,我不确定python应该如何识别该窗口的控件,特别是Password文本字段:

到目前为止,我一直试图用它的标题来索引它,但没有成功:

代码语言:javascript
运行
复制
windowsSecurity = pywinauto.findwindows.find_windows(title_re = r"Windows Security")

--------------------------------- 解决方案 --------------------------------

通过以下方式解决了这个问题。首先,我确定了窗口弹出的控件是什么,但在此之前,我会留下一些暂停时间让它浮出水面。其次,使用我识别的控件,发送键并发送单击命令。下面是我通过dlg.print_ctrl_ids()获得的控件列表

| | Edit - '' (L656, T323, R1100, B371) | | ['Surname, NameEdit', 'Edit'] | | child_window(auto_id="PasswordField_2", control_type="Edit") | | |

代码语言:javascript
运行
复制
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")
EN

回答 1

Stack Overflow用户

发布于 2020-06-02 13:52:57

通过以下方式解决了这个问题。首先,我确定了窗口弹出的控件是什么,但在此之前,我会留下一些暂停时间让它浮出水面。其次,使用我识别的控件,发送键并发送单击命令。下面是我通过dlg.print_ctrl_ids()获得的控件列表

| | Edit - '' (L656, T323, R1100, B371) | | ['Surname, NameEdit', 'Edit'] | | child_window(auto_id="PasswordField_2", control_type="Edit") | | |

代码语言:javascript
运行
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62148447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档