python 环境配置
需要安装pywinauto, 可以使用pip,具体过程,这里就不累述。
当安装完成,执行下
from pywinauto.application import Application
不报错,就说明安装成功
pywinauto 与application建立连接
官网这里显示了好几种建立
连接
这里采用如下
app = Application('uia').start(r'C:\WINDOWS\system32\mstsc.exe')
uia
是一个backend参数,与这个windows dialog的底层实现有关。一般都是uia
在这个建立的过程中,app会解析出这个dialog的参数
pywinauto 定位元素,操作元素
如果操作dialog上的元素呢? 例如点击,输入文本等?
点击
获取到元素,调用click()方法就可以
可点击的元素,一般是Button类型的
输入文本
获取到元素,调用 set_edit_text 就可以。
可输入文本的元素,一般是type是EditL类型的。
获取元素
有一种我认为比较简单的写法,用于定位元素。app[][]...
其中每个[]
里面是dialog的名字,就是我们ui上看到的,也是我们在spy上看到的class name.
在这里,第一个dialog的名字是Remote Desktop Connection
如果是中文的话,填相应的中文,可以使用spy, copy其caption
以防止文字拼写错误。spy
有两种辅助方式,可以帮助我们定位到 准确的元素。一个是spy
工具,
一个是pywinauto自带的print_control_identifiers
spy 辅助
如果电脑没有,这个需要安装。
操作步骤:
- 打开spy
- ctrl +f
- drag
如上图所示,有的定位dialog是没有名称的。有的是有名称的。
print_control_identifiers
这个可以打印出dialog的具体信息,比如,我们想知道 想往computer里面输入机器号,
app[‘Remote Desktop Connection’][‘???’]
这里的???指的是 我们想定位的computer那里。
如果正确定位了,接下来我们只需要 app[‘Remote Desktop Connection’][‘???’].set_edit_text(“”) 就可以了
下面是remote desktop connection 打印出的信息
我们要找到computer的标签,其中,他的type应该是可编辑的Edit。
Control Identifiers:
Dialog - 'Remote Desktop Connection' (L681, T177, R1239, B496)
['Dialog', 'Remote Desktop ConnectionDialog', 'Remote Desktop Connection']
child_window(title="Remote Desktop Connection", control_type="Window")
|
| Static - 'Computer:' (L704, T327, R792, B343)
| ['Static', 'Computer:', 'Computer:Static', 'Computer:0', 'Computer:1', 'Static0', 'Static1']
| child_window(title="Computer:", auto_id="5011", control_type="Text")
|
| ComboBox - 'Computer:' (L798, T321, R1114, B346)
| ['Computer:2', 'ComboBox', 'Computer:ComboBox']
| child_window(title="Computer:", auto_id="5012", control_type="ComboBox")
| |
| | Edit - 'Computer:' (L802, T325, R1090, B341)
| | ['Computer:Edit', 'Edit']
| | child_window(title="Computer:", auto_id="5012", control_type="Edit")
| |
|
| Static - 'Username:' (L704, T363, R780, B379)
| ['Static2', 'Username:', 'Username:Static']
| child_window(title="Username:", auto_id="13063", control_type="Text")
|
|
| Button - 'Connect' (L1012, T449, R1112, B477)
| ['Connect', 'Button3', 'ConnectButton']
| child_window(title="Connect", auto_id="1", control_type="Button")
可以看到几个有关Computer
- child_window(title=“Computer:”, auto_id=“5012”, control_type=“ComboBox”)
- child_window(title=“Computer:”, auto_id=“5011”, control_type=“Text”)
- child_window(title=“Computer:”, auto_id=“5012”, control_type=“Edit”)
我们需要使用第3个,因为其是edit的。文章来源:https://www.toymoban.com/news/detail-629637.html
app['Remote Desktop Connection'].child_window(title="Computer:", control_type ="Edit").set_edit_text("connect_conputer")
整体的代码
下面是整体的代码,因为有dialog memory,我的一些信息就不用输入了。
加入time.sleep 是为了等待dialog UI 刷新完成。也可以使用
actionable_dlg = dlg_spec.wait(‘visible’)文章来源地址https://www.toymoban.com/news/detail-629637.html
app = Application('uia').start(r'C:\WINDOWS\system32\mstsc.exe')
#way 1
#dlg_spec = app.Remote
#way2
#dlg_spec = app.window(title='Remote Desktop Connection')
# wait till the window is really open
#actionable_dlg = dlg_spec.wait('visible')
# 输入远程电脑名称
app['Remote Desktop Connection'].child_window(title="Computer:", control_type ="Edit").set_edit_text("我的远程电脑名称")
# 点击连接
app['Remote Desktop Connection']['Connect'].click()
time.sleep(3)
# 远程连接,电脑输入密码. 用户名有dialog memory,所以不用输入了
app['Remote Desktop Connection']['Windows Security'].child_window(auto_id="PasswordField_2", control_type="Edit").set_edit_text("password")
time.sleep(2)
# 点击Ok
app['Remote Desktop Connection']['Windows Security'].child_window(title="OK", auto_id="OkButton", control_type="Button").click()
到了这里,关于pywinauto 自动进行远程桌面登陆 remote desktop connection的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!