Python自动化测试WPF应用
1.概要
在做WPF的开发中在某些场景下会需要进行重复的行为进行各方面覆盖测试,例如:
-
希望在注册环节输入大量的密码来则是正则表达式是否严谨。
-
重复某些UI操作步骤复现一些极少概率才有可能触发的bug。
这个时候如果纯手动操作会非常影响进度效率低下,这个时候单独开一台机器跑自动化测试的脚本来辅助测试,不需要有人值守在傍边就可以完成这样的工作可以说是一件非常节约生命的事情。
这里分享一下脚本自动化测试的一个例子,给有这样需求的小伙伴一个思路。
- 测试脚本
语言:python
版本:3.11.5
IDE:VS Code
环境:https://www.python.org/ftp/python/3.11.5/python-3.11.5-amd64.exe
- 测试程序
语言:C#
框架:WPF
IDE:VS 2022
环境:.NET 6
2.详细内容
自动化测试示例1
测试内容:自动点击窗体中的某个按钮。
这个自动化测试会需要用到pyautogui的包,这个时候需要在项目目录下打开powershell输入。
pip install pyautogui

代码:
pyautogui这个包的特点是根据图像来识别要点击的图片,所以需要把你要点击的按钮截图下来保存与py脚本同一级目录下(只用截图按钮即可)。然后先启动WPF应用程序再启动py脚本即可(注意WPF窗体不能被遮挡)。

import pyautogui # 找到按钮图像位置 (这里需要一张按钮的截图,命名为'button.png') button_location = pyautogui.locateOnScreen('button.png') if button_location: # 计算按钮中心点位置 button_center = pyautogui.center(button_location) # 移动鼠标至按钮中心并点击 pyautogui.moveTo(button_center) pyautogui.click() else: print("Button not found on screen.")
运行效果:

自动化测试示例2
测试内容:自动向文本框输入一段字符串,然后点击按钮验证输入的内容。
这个自动化测试会需要用到pywinauto的包,这个时候需要在项目目录下打开powershell输入。
pip install pywinauto
代码:
这里只需要把py脚本中的路径配置好即可,注意路径的斜杠。
from pywinauto.application import Application import time # 启动应用程序 app = Application(backend="uia").start("your path/..../WpfApp1.exe") time.sleep(1) # Wait for 5 seconds # 选择窗口 dlg = app.window(title='MainWindow') # 在密码框中输入内容 , control_type="TextBox" dlg.child_window(auto_id="TxboxPwd").type_keys('123') # 点击登录按钮 , control_type="Button" dlg.child_window(auto_id="BtnOK").click()
WPF代码:
<Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBox x:Name="TxboxPwd" Width="200" Height="25" ></TextBox> <Button x:Name="BtnOK" Width="200" Height="25" Content="Button" Click="Button_Click" Margin="0,20,0,0"></Button> </StackPanel> </Window>
`public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); TxboxPwd.Text = "hello,py"; } private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show(TxboxPwd.Text); } }`
运行效果:


题外话

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。


二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试宝典


简历模板
👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
若有侵权,请联系删除
更多推荐
所有评论(0)