网站内容建设 发布形式,建筑工程网上报建网站诚信手册,广告设计专业烧钱吗,淘客没有网站难做前言
上一篇文章地址#xff1a;
pywinauto#xff1a;Windows桌面应用自动化测试#xff08;六#xff09;-CSDN博客
下一篇文章地址#xff1a;
暂无
一、实战常用方法
1、通过Desktop快速获取窗口
通过之前章节我们了解到控制应用的方法为Application#xff0…前言
上一篇文章地址
pywinautoWindows桌面应用自动化测试六-CSDN博客
下一篇文章地址
暂无
一、实战常用方法
1、通过Desktop快速获取窗口
通过之前章节我们了解到控制应用的方法为Application需要连接应用再获取窗口。
from pywinauto.application import Application
现在我们可以通过Desktop直接获取窗口。
from pywinauto import Desktop def is_logged_in():return Desktop(backenduia).window(titleMain Page).exists()
两种方法对比如下
特性Desktop 方法Application 方法用途查找和连接所有已打开的窗口启动和控制特定的应用程序适用场景需要与系统中所有应用程序或窗口进行交互需要启动和控制特定应用程序性能可能因为需要遍历所有窗口而较慢对于特定应用程序的操作更加高效灵活性可以与任何已打开的窗口进行交互只能控制当前脚本启动的应用程序启动应用程序不适用可以启动新的应用程序控制应用程序生命周期不适用可以启动、关闭和重新启动应用程序示例代码Desktop(backenduia).window(title...)Application(backenduia).start(...).window(title...)
2、获取嵌套窗口
假设窗口嵌套了很多层那么我们该如何获取他呢一层层获取还是直接获取其实两种方式都可行对于直接获取可以采用Desktop方法也可以获取到应用窗口后采用children_window方法直接获取。
3、children_window与children的方法对比
1child_window方法
child_window方法用于精确查找单个子控件。它不会返回列表而是返回第一个匹配的控件。如果没有找到匹配的控件会引发异常。
3children方法
children方法用于获取一个窗口的所有直接子控件。这个方法会返回一个包含子控件的列表。它接受多个参数来筛选符合条件的控件。
特性child_window 方法children 方法用途根据特定属性查找单个子控件获取所有子控件或根据条件筛选子控件返回值单个控件对象控件对象的列表适用场景查找特定的、已知属性的控件需要遍历和操作多个控件属性过滤可以使用多个属性过滤可以传递条件进行筛选性能查找单个控件性能较高获取所有子控件如果控件较多性能可能受影响示例代码main_window.child_window(title..., control_type...)main_window.children(control_type...)
4、inspect使用小技巧
当我们想选中窗口时可以点击它来显示定位元素看看有没有框如下图你觉得你选中了框但实际上你可能选中了标题。
还有一点就是元素的点击区域你以为点中了实际上只是点钟了框的中心而它的作用域是文字部分。 5、控制应用内嵌的系统文件窗口
假设应用调用了系统文件窗口需要对两个输入框输入信息如下展示 其中1需要输入文件路径2需要输入文件名。
这种情况就需要使用多种操作来实现该功能以下是一个简单的代码 def get_upgrade_folder_win(self):获取升级选择文件的窗口# return self.dialog.child_window(auto_idMainForm.widget_client.viScanner.qt_tabwidget_stackedwidget.FormEquipmentlist.FirmUpgrageBox.widget.widget_path.pushButton_browers)# return Desktop(backenduia).window(title_re请选择固件升级文件)return self.dialog.child_window(title请选择固件升级文件)def choise_upgrade_file(self, file_path):选择升级文件需要传输文件路径# 定义文件路径file_path rC:\Users\Downloads\OTA.gtaupgrade_win self.get_upgrade_folder_win()# 分割路径directory, filename os.path.split(file_path)print(Directory:, directory)print(Filename:, filename)upgrade_win.print_control_identifiers()way_element upgrade_win.child_window(title_re.*地址.*, found_index0)rectangle self._element_num_of_copies(way_element, 5 / 6)click(coordsrectangle)upgrade_win.child_window(title_re.*地址.*, class_nameEdit, found_index0).type_keys({BACKSPACE})upgrade_win.child_window(title_re.*地址.*, class_nameEdit, found_index0).set_text(directory)from pywinauto.keyboard import send_keyssend_keys({ENTER})upgrade_win.child_window(title文件名(N):, class_nameEdit).set_text(filename)
这里涉及到一些输入文本的方法汇总一下
1set_text方法 直接设置控件的文本内容。 app.window(titleYourWindowTitle).Edit.set_text(YourText)
2type_keys方法 模拟按键输入可以包括特殊键如回车键、Tab键等。 app.window(titleYourWindowTitle).Edit.type_keys(YourText{ENTER})
3send_keys方法 使用pywinauto.keyboard模块可以模拟全局键盘输入。 from pywinauto.keyboard import send_keys send_keys(YourText{ENTER})
4WrapperObject.set_edit_text方法 用于直接设置编辑控件的文本内容 edit app.window(titleYourWindowTitle).Edit.wrapper_object() edit.set_edit_text(YourText)
5WrapperObject.send_chars方法 模拟逐字符输入 edit app.window(titleYourWindowTitle).Edit.wrapper_object() edit.send_chars(YourText)
一些特殊字符的输入方式总结如下
特殊字符描述输入方式 (type_keys)输入方式 (send_keys){SPACE}空格键{SPACE}{SPACE}{BACKSPACE}退格键{BACKSPACE}, {BS}, {BKSP}{BACKSPACE}, {BS}, {BKSP}{BREAK}Break 键{BREAK}{BREAK}{CAPSLOCK}大写锁定键{CAPSLOCK}{CAPSLOCK}{DELETE}删除键{DELETE}, {DEL}{DELETE}, {DEL}{DOWN}向下箭头键{DOWN}{DOWN}{END}结束键{END}{END}{ENTER}回车键{ENTER}, ~{ENTER}, ~{ESC}Escape 键{ESC}{ESC}{HELP}帮助键{HELP}{HELP}{HOME}Home 键{HOME}{HOME}{INSERT}插入键{INSERT}, {INS}{INSERT}, {INS}{LEFT}向左箭头键{LEFT}{LEFT}{NUMLOCK}数字锁定键{NUMLOCK}{NUMLOCK}{PGDN}向下翻页键{PGDN}{PGDN}{PGUP}向上翻页键{PGUP}{PGUP}{PRTSC}打印屏幕键{PRTSC}{PRTSC}{RIGHT}向右箭头键{RIGHT}{RIGHT}{SCROLLLOCK}滚动锁定键{SCROLLLOCK}{SCROLLLOCK}{TAB}Tab 键{TAB}{TAB}{UP}向上箭头键{UP}{UP}{ADD}加号键{ADD}{ADD}