前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python自动化测试WPF应用

Python自动化测试WPF应用

作者头像
JusterZhu
发布2023-09-20 14:51:22
2970
发布2023-09-20 14:51:22
举报
文章被收录于专栏:JusterZhu

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输入。

代码语言:javascript
复制
pip install pyautogui

代码:

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

代码语言:javascript
复制
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输入。

代码语言:javascript
复制
pip install pywinauto

代码:

这里只需要把py脚本中的路径配置好即可,注意路径的斜杠。

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

代码语言:javascript
复制
<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>
代码语言:javascript
复制
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            TxboxPwd.Text = "hello,py";
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show(TxboxPwd.Text);
        }
    }

运行效果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-20 07:30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JusterZhu 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概要
  • 2.详细内容
    • 自动化测试示例1
      • 自动化测试示例2
      相关产品与服务
      腾讯云服务器利旧
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档