首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊 PC 端自动化最佳方案 - WinAppDriver

准备 WinAppDriver,全称为 Windows Application Driver,它是 Windows 上一个类似 Selenium UI 自动化驱动服务框架 它支持 Appium,可以使用...Appium-Python-Client 依赖库完成对 Windows 桌面程序自动化操作 项目地址:https://github.com/Microsoft/WinAppDriver 需要注意是...,要使用 WinAppDriver 服务框架完成 Windows 自动化,需要满足 Windows10 或 Windows Server 2016 以上系统 另外,它支持应用程序包含: UWP -...实战一下 我们以操作 PC 端微信为例,聊聊自动化常见步骤 首先,我们本机打开 WinAppDriver 服务,让它在后台运行 然后,我们使用 Python 编写自动化脚本 通过 ip 地址、端口号及...最后 实际使用过程,可能会遇到复杂桌面应用程序,这时我们可以通过打印驱动对象「 page_source」元素控制树值,以此来帮助我们进行快速定位元素,进而完善自动化脚本 如果你觉得文章还不错,请大家

2.5K11
您找到你想要的搜索结果了吗?
是的
没有找到

聊聊 PC 端自动化最佳方案 - Pywinauto

介绍 Pywinauto,完全由 Python 构建一个模块,可以用于自动化 Windows 上 GUI 应用程序 同时,它支持鼠标、键盘操作,元素控件树较复杂界面,可以辅助我们完成自动化操作...实战一下 实战之前,我们先安装依赖包 pywinauto # 安装依赖 pip3 install pywinauto 接下来,我们还是以上篇文章例子来讲解完整实现过程 4-1 打开微信客户端...首先,通过检查工具判断应用 backend 属性值,PC 端微信 backend 为「 uia 」 然后,实例化一个「 Application 」类 最后,使用该对象内置函数创建一个应用对象...(打开) app = Application(backend='uia').start('D:\Program Files (x86)\Tencent\WeChat\WeChat.exe') 需要指出是...和 WinAppDriver 都能很好完成 PC 端自动化,但是由于 WinAppDriver 支持 Appium,脚本语法简洁性方面可能更有优势

2.3K51

软件测试|PC端应用自动化最佳解决方案——Pywinauto

Pywinauto介绍Pywinauto,完全由 Python 构建一个模块,可以用于自动化 Windows 上 GUI 应用程序。...同时,它支持鼠标、键盘操作,元素控件树较复杂界面,可以辅助我们完成自动化操作。... backend 为「 uia 」元素控件和 WinAppDriver 类似,在编写自动化脚本之前,我们需要先获取元素控件各类属性值获取元素控件有 2 种方式:窗口内置方法检查工具窗口对象内置...,通过检查工具判断应用 backend 属性值,PC 端微信 backend 为「 uia 」然后,实例化一个「 Application 」类最后,使用该对象内置函数创建一个应用对象import...,释放资源self.app.kill()总结经过上述步骤,我们完成了一个使用Pywinauto来实现PC端应用自动化例子,其实使用 WinAppDriver也可以完成,但是环境可能较为复杂,两个工具都可以完成

2.6K20

【译】Visual Studio 2019 WPF & UWP XAML 开发工具新特性

可移动应用内工具栏(v16.3) XAML绑定失败面板(独立 VSIX 早期 alpha 预览): 为了开发人员应用程序中发生数据绑定失败为开发人员提供帮助,我们开发中提供了一项新功能,该功能为...预览,此功能也仅适用于 WPF .NET Core 应用程序,不支持扩展性,也不具有完整功能。 ?...单击后,XAML 设计器将最小化其附加 XAML 选项卡,并仅针对 XAML 编辑器视图弹出一个新窗口。您可以将此新窗口移动到 Visual Studio 任何显示或选项卡组。...您还可以使用 Windows 应用程序打包项目为具有 Islands .NET Core 3 生成 MSIX。要了解如何入门,请访问我们文档。...只需打开要在其中添加 merge 语句 XAML 文件,然后找到要合并文件,然后解决方案资源管理器右键单击该文件即可。

7.2K30

如何追踪 WPF 程序当前获得键盘焦点元素并显示出来

我们有很多调试工具可以帮助我们查看 WPF 窗口中当前获得键盘焦点元素。本文介绍监控当前键盘焦点元素方法,并且提供一个需要任何调试工具自己绘制键盘焦点元素方法。...在打开实时可视化树后,我们可以略微认识一下这里几个常用按钮: 这里,我们需要打开两个按钮: 为当前选中元素显示外框 追踪具有焦点元素 这样,只要你应用程序当前获得焦点元素发生了变化,就会有一个表示这个元素所在位置和边距叠加层显示在窗口之上...使用代码查看当前获得键盘焦点元素 我们打算在代码编写追踪焦点逻辑。...当然,为了最好显示效果,你需要将这个控件放到最顶层。 绘制并实时显示 WPF 程序当前键盘焦点元素 如果我们需要监听应用程序中所有窗口中的当前获得键盘焦点元素怎么办呢?...于是,你需要另一篇博客方法来监视整个 WPF 应用程序所有窗口: 如何监视 WPF 所有窗口,在所有窗口中订阅事件或者附加 UI 里面有一段对 ApplicationWindowMonitor

41240

如何监视 WPF 所有窗口,在所有窗口中订阅事件或者附加 UI

路由事件路由可并不会跨越窗口边界呀? 本文将介绍编写应用程序窗口监视器,来监听整个应用程序中所有窗口中路由事件。这样方法可以用来无时无刻监视 WPF 程序各种状态。...于是,我们只需要遍历 Windows 集合便可以获得应用程序所有窗口,然后对每一个窗口监听需要路由事件。...这种操作意味着将来新打开窗口是不会被监听到事件。 我们有没有方法拿到新窗口显示事件呢?遗憾是——并不行。 但是,我们有一些变相处理思路。...比如,由于 Windows 系统特性,整个用户空间内,统一刻只能有一个窗口能处于激活状态。我们可以利用当前窗口激活与非激活切换时机再去寻找新窗口。...} 另外, ApplicationWindowMonitor 构造函数中加入了一个过滤窗口委托。比如你可以让窗口监听只对主要几个窗口生效,而对一些信息提示窗口忽略等等。

36740

WPF 程序添加 Windows 跳转列表支持

当时应用程序要想用上这样功能需要调用 shell 提供一些 API。 然而在 WPF 程序中使用 Windows 跳转列表功能非常简单, XAML 里面就能完成。...本文将介绍如何让你 WPF 应用支持 Windows 跳转列表功能。 ---- 一个简单跳转列表程序 新建一个 WPF 程序,然后直接在 App.xaml 添加跳转列表代码。...加了一个简单图标,这样不至于显示一个默认应用图标。...运行此程序后就可以在任务栏上右击时候看到跳转列表: ? 在这段程序,我们添加了两个“任务”,跳转列表中有一个“任务”分类。因为系统是英文,所以显示是“Task”。...在任务分类,有两个“任务”,启动新窗口 以及 修改 walterlv 个性化设置。第一个任务只设了标题和鼠标移上去提示信息,于是显示图标就是应用本身图标,点击之后也是启动任务自己。

1.1K20

自定义一个“传统” Validation.ErrorTemplate

如果用户输入值无效,你可能希望应用程序 用户界面 (UI) 上提供一些有关错误反馈。...控件数据出错显示红色边框,当控件获得焦点通过Tooltip显示具体错误信息,当空间失去焦点关闭Tooltip。...通过FindAncestor绑定到祖先元素AdornedElementPlaceholderAdornedElement,判断它是否出错并获得键盘焦点,如果是则打开Tooltip: <ControlTemplate.Triggers...,它使用Binding [0].ErrorContent显示ValidationErrors附加属性(是一个ReadOnlyObservableCollection类型集合)第一条内容(也可以做成一个显示所有错误...这篇文章已经讲解了如何自定义Validation.ErrorTemplate,有需要的话可以自定义一个合适自己样式。 4.

1.4K40

第五章-处理多窗口 | Electron实战

当该窗口关闭应用程序退出。虽然这种行为完全可以接受,但我们通常希望能够打开多个独立窗口。本章,我们将Fire Sale从一个单窗口应用程序转换为一个支持多个窗口应用程序。...然而我们从第4章-使用本机文件对话框和帮助进程间通讯分支开始。 图5.1 第四章,我们建立了主进程和一个渲染进程之间通信。 ?...Set是唯一元素集合;数组可以有重复值。选择使用set而不是数组,因为这样更容易删除元素。这个清单显示了如何用JavaScript创建一个Set。 列表5.1 创建一个跟踪新窗口集合: ....更明显是,如果新窗口与前一个窗口稍微偏移,就会创建新窗口,如图5.4所示。这个清单显示了如何偏移窗口。 清单5.10 基于当前焦点窗口偏移新窗口: ....图5.12 应用程序打开创建一个窗口,但没有窗口: .

4.1K21

javaScript基础最全 最精美 不好打我好吧

(因为⾯向对象需要具有封装、继承、多态特征) JavaScript语⾔包含三个核⼼:ECMAScript基本语法、DOM、BOM ? ?...HTML如何使⽤JavaScript(三种) 1 使⽤ 标签 ? 2 外部 JavaScript: ? 3内联JavaScript处理器: ?...新节点); 父节点最后插入一个新节点 使用方法:父节点.insertBefore(要插入节点,参考节点); 父节点.insertBefore(新节点,参考节点)参考节点前插入;...: window.open(url,target,param) url 要打开地址 target新窗口位置 _blank _self _parent(父框架) param 新窗口一些设置...如果你觉得本文对你有帮助,麻烦动动手指顶一下,算是对本文一个认可。 如有错误 联系邮箱 欢迎批评指正!

1.3K30

Ask Apple 2022 与 SwiftUI 有关问答(上)

,然后 @FocusState 变量帮助下,可以隐藏一个并将焦点转移到键盘上。...是否关于如何使用多个场景指导或例子?或者大多数应用程序需要一个 WindowGroup ?A:多场景对于建立复杂应用程序是很有用,特别是 macOS 上。...但是从一个文本字段到下一个文本字段聚焦感觉不够流畅,而且每当我一个文本字段输入一个字母 CPU 使用率似乎会飙升到 70% — 100%。...WindowGroup 和 OpenWindowActionQ: macOS 上是否可以创建新窗口附加参数?一个子上下文中创建一个托管对象,并希望将这个对象发送到一个窗口。...目前做法是一个单例中保存对子上下文和托管对象引用,然后用一个 URL 打开一个新窗口,这个 URL 单例检查上下文和托管对象。如果我们能用自定义参数启动新窗口,那就更好了。

12.2K20

WPF 命令自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能是这些原因

WPF ,你可以使用 Command="{Binding WalterlvCommand}" 方式来让 XAML 一个按钮或其他控件绑定一个命令。...这本是一个非常智能特性,直到你可能发现你按钮可用性状态不正确…… 本文介绍默认情况下,WPF UI 上这些命令会在什么时机进行刷新;以及没有及时刷新,可以如何强制让这些命令可用性状态进行刷新...如何手动刷新命令 调用以下代码,即可让 WPF 命令刷新其可用性: 1 CommandManager.InvalidateRequerySuggested(); WPF 命令何时刷新?...鼠标的左键或者右键松开时候 在任何一个控件获得键盘焦点或者失去键盘焦点时候 这部分代码可以在这里查看: CommandDevice.PostProcessInput 最关键代码贴在这里: 1...,比如这些: Menu 菜单子菜单项打开时候(参见 MenuItem.OnIsSubmenuOpenChanged) 长按滚动条按钮以连续滚动过程(参见 Tracker.DecreaseRepeatButton

75830

WPF 自定义文本框输入法 IME 跟随光标

本文告诉大家 WPF一个自定义文本框,如何实现让输入法跟随光标 本文非小白向,本文适合想开发自定义文本框,从底层开始开发文本库伙伴。...\System\Windows\Documents\ImmComposition.cs 文件看到官方是如何让 TextBox 控件获取输入法焦点,和在输入光标变更,修改输入法输入框坐标 先了解一下输入法相关知识...需要重新绑定输入法,告诉输入法当前窗口获取输入焦点,可以使用如下代码,通过修改附加属性值,通过附加属性变更调用到 WPF 框架逻辑,从而修复此问题 if (_defaultImeWnd...模拟光标是 OnRender 方法里面,使用画出一个矩形模拟,没有做闪烁 为了让控件能接收键盘消息,需要设置 FocusableProperty 属性。.../lindexi/lindexi_gd.git 获取代码之后,打开 LightTextEditorPlus.sln 文件 参考文档 WPF 简单聊聊如何使用 DrawGlyphRun 绘制文本 Can

1.7K21

dotnet 从入门到放弃 500 篇文章合集

WPF 对比 UWP 开发需要知道1000个问题 Visual studio C# 代码使用 NotNull visual Studio 无法调试,提示程序跟踪已退出 visual-studio-...uwp 如何拖动一个TextBlock文字到另一个TextBlock win10 uwp 如何让 Page 继承泛型类 win10 uwp 如何一个集合按照需要顺序进行排序 win10 UWP...获取文件夹出错 win10 uwp 获得元素绝对坐标 win10 uwp 获得缩略图 win10 uwp 萤火虫效果 win10 uwp 让焦点在点击页面空白处回到textbox win10 uwp...WPF 使用封装 SharpDx 控件 WPF 修改按钮按下颜色 WPF 写系统日志 WPF 判断调用方法堆栈 wpf 单例 WPF 只允许打开一个实例 WPF 可获得焦点属性 WPF Alt...+Tab 隐藏窗口 WPF 好看矢量图标 wpf 如何使用 Magick.NET 播放 gif 图片 WPF 如何在 WriteableBitmap 写文字 WPF 如何应用程序调试启动 WPF 如何在绑定失败异常

10.4K20

通过分析 WPF 渲染脏区优化渲染性能

每一帧绘制时候,仅仅绘制改变部分,软件可以节省大量渲染资源。而每一帧渲染改变需要重绘部分就是脏区。...以下是一款 WPF 程序 Walterlv.CloudKeyboard 随着交互进行不断需要重绘脏区。 可以看到,脏区几乎涉及到整个界面,而且刷新非常频繁。这显然对渲染性能而言是不利。...启动 WPF Performance Suite,选择工具 Perforator,然后 Action 菜单启动一个待分析 WPF 进程。...优化脏区重绘 一开始程序,因为使用了模拟 UWP 高光效果,导致大量控件重绘高光部分,这是导致每一帧都在重新渲染罪魁祸首。...于是将高光渲染关闭,脏区重新渲染将仅仅几种控件样式改变时候(例如焦点改变): 光照效果可以参见我另一篇博客: 流畅设计 Fluent Design System 光照效果 RevealBrush

29620

【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解

1.属性介绍WindowFormsHost是WPF一个控件,它可以用来WPF应用程序嵌入一个Windows Forms控件。...常见场景有:WPF应用程序使用Windows Forms控件:有些Windows Forms控件具有WPF没有的功能或特性,如PropertyGrid控件。...需要注意是,使用WindowFormsHost控件需要避免出现由于两个不同平台控件互相影响而引起问题。...以下是一个简单案例,展示如何WPF窗口中嵌入WinForms控件,以及WinForms控件中使用WPF控件。Visual Studio创建一个WPF应用程序。...WinForms控件中使用WPF控件也是同样原理。正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

59141

WPF 开启Pointer消息存在

本文记录在 WPF 开启 Pointer 消息坑 屏幕键盘 启用了Pointer之后,调用Textbox.Focus(),起不来屏幕键盘,必须点在它之上才行,触摸它之上才行 使用屏幕绝对坐标而不是窗口坐标...message · Issue #3379 · dotnet/wpf 但预计不会在 WPF 修复,原因是这是 Windows WM_Pointer 机制坑,和 WPF 其实没有关系 另一个解决方法是关闭系统全局触摸反馈点...表现是如当前触摸被某个获取焦点窗口捕获,此时触摸点到一个后台窗口,未激活窗口上,那此窗口依然可以收到触摸消息,无论这个窗口是在哪个进程上,只需要此窗口所在进程开启 Pointer 消息即可 而原先交互是如果触摸被某个前台窗口捕获...,那么其他窗口将啥都收不到,包括 WM_Touch 消息或者实时触摸消息 滑动过程开启窗口触摸失效 进行 Manipulation 过程打开或者激活了窗口,将导致此窗口不接受触摸消息而触摸失效。...例如另一个进程文本框获取焦点滑动 ListView 列表打开了窗口或者激活现有的窗口到前台获取焦点,在此窗口内进行触摸,可能会收不到触摸事件 原因是进行 Manipulation 将会设置一些特殊内部字段参数

79230

【愚公系列】2023年09月 WPF控件专题 Window窗体属性和事件

通过向窗体添加控件,并使用事件处理程序来响应用户交互,可以创建功能强大Windows桌面应用程序。...GotFocus事件:当窗体获得焦点触发。可以用来实现窗体获得焦点操作。 LostFocus事件:当窗体失去焦点触发。可以用来实现窗体失去焦点操作。...这些事件可以帮助程序员实现窗体交互操作和界面的动态展示,让应用程序更加灵活、生动、易用。...3.相关案例 案例1:窗体属性 WPF,Window是最基本窗体控件,每个Window控件都有许多可用属性来定制它外观和行为。下面是一个窗体例子,展示了一些常用窗体属性。...WPF,可以通过XAML代码添加事件处理程序来响应这些事件。

43611

一点点从坑里爬出来:如何正确打开 WPF Popup?

WPF 打开一个 Popup 并没有想象当中容易。虽说提供了一个 IsOpen 属性用于显示 Popup,但实际上造成 Bug 会让你解得死去活来。...---- 先说结论 本文一开始就贴出打开一个 Popup 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // 以下代码,我们假定 popup...不要在 MouseUp/Click 事件打开 Popup Popup 有一个属性 StaysOpen,当设置为 false ,我们期待效果是失焦后 Popup 关闭。...无论你在后面如何写让 Popup 以及内部控件获得焦点代码,实际上这种情况下弹出 Popup 不会真正获得焦点,除非手动点击。...需要显式为 Popup 设置焦点 注意注意,如果你 Popup 包含文本框,那么一定需要加上 SetFocus 调用。

43530
领券