使用WinAPPDriver做UI自动化测试

WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动化测试服务

官方GitHub:

GitHub: WinAppDriver/Samples/C#/NotepadTest at master · microsoft/WinAppDriver (github.com)

该项目主要是依据官方NotepadTest的一个改进, 添加了三个功能:

  • 打印日志 
  • 截图 
  • 录制测试过程视频 

我的GitHub地址:

wanding-sai/UsingWinAppDriverToTestNotepad: Using WinAppDriver To TestNotepad, save log, Screenshot,Runvideo (github.com)

目录

 

在自己本机上成功运行NotepadTest

NLog的使用

为该项目添加截图,记录测试过程中重要步骤

为该项目添加视频录制功能,记录测试视频


在自己本机上成功运行NotepadTest

在自己本机上成功运行NotepadTest

(1)以管理员身份打开VS2019, 打开下载下来的代码:NotepadTest

(2)双击NotepadTest.sln

(3) 修改Target framework为: .NET Framework 4.6

       因为有可能打开project后是4.5, 在后面安装package时,可能会构建失败

      修改方法:

           点击NotepadTest, 右键, 属性(properties),  

(4)platform改为x64

修改方法:

查看vs上方platform处显示的为:Any CPU

 

点击右边的下三角,选择Configuration Manager,

修改Platform为x64, 点击close

(5)build solution

点击 NotepadTest, 右键 clean solution->build solution

(6) 运行TestSuite

注: 在运行前检查一下,WinAppDriver.exe 是否正在运行,如果没有运行,

找到:C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe

右键,以管理员身份运行

如果找不到这个应用程序,可安装一下

安装包:

安装包,见github:

wanding-sai/UsingWinAppDriverToTestNotepad: Using WinAppDriver To TestNotepad, save log, Screenshot,Runvideo (github.com)

点击菜单栏中 Test->Test Explorer

可选择某一个TestMethod运行,也可RunAll

 

NLog的使用

该部分见文章:

测试过程中使用NLog记录日志_畹在水中芷的博客-CSDN博客

为该项目添加截图,记录测试过程中重要步骤

在添加了输出日志功能后,可以添加截图功能,记录结果,同时也方便和预期效果比对

为该项目添加截图,记录测试过程中重要步骤

(1)添加WinDriverUtil.cs文件,捕获当前session

点击NotepadTest->右键Add->New Item->WinDriverUtil.cs

using NLog;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Remote;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NotepadTest
{
    public class WinDriverUtil
    {
        private static Logger _logger = LogManager.GetCurrentClassLogger();
        private static WindowsDriver<WindowsElement> _desktopSession = null;
        /// <summary>
        /// Url to communicate with Windows Application Driver
        /// </summary>
        public const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
        private static uint _remainCount = 0;
        private const uint _refreshCount = 7;
        private static readonly TimeSpan _commandTimeOut = new TimeSpan(0, 1, 30);
        /// <summary>
        /// Obtain current desktop session
        /// </summary>
        public static WindowsDriver<WindowsElement> DesktopSession
        {
            get
            {
                if (_remainCount == 0)
                {
                    // Dispose the old session
                    _desktopSession?.Dispose();
                    _remainCount = _refreshCount;
                   var desktopDesiredCapabilities = new DesiredCapabilities();
                    desktopDesiredCapabilities.SetCapability("app", "Root");
                    // Assign new session
                    _desktopSession = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl),
                        desktopDesiredCapabilities, _commandTimeOut);
                }
                --_remainCount;
                return _desktopSession;
            }
        }
        /// <summary>
        /// Shot the session part screen and save it with full file name
        /// </summary>
        /// <param name="session">Session you want to shot</param>
        /// <param name="fullFileName">File name for image</param>
        public static void ShotScreen(WindowsDriver<WindowsElement> session, string fullFileName)
        {
            session.GetScreenshot().SaveAsFile(fullFileName, ScreenshotImageFormat.Png);
        }
    }
}

 

(2)打开ScenarioEditor.cs,在测试方法EditorEnterText()中添加:

//地址可自行修改
WinDriverUtil.ShotScreen(WinDriverUtil.DesktopSession, @"D:\Improvement\PrepareForTestReportTeacher\NotepadTest\TestResults\screen.png");

(3)在菜单栏中Test->Test Explorer, 找到EditorEnterText,右键Run,运行测试

测试成功后,即可看到测试结果文件夹中多了一张截图

为该项目添加视频录制功能,记录测试视频

为该项目添加视频录制功能,记录测试视频

(1)添加ScreenRecorder.cs

点击NotepadTest->右键Add->New Item->ScreenRecorder.cs

见github:

在添加该文件时有可能会有错误,缺少依赖

解决办法:

点击Reference—》右键Manage Nuget Package ->搜索ScreenRecorderLib

选择合适的版本安装

(2)打开ScenarioEditor.cs,在测试方法:EditorEnterText()中,添加:

//地址可自行修改
var screenRecorder = ScreenRecorder.CreateRecorder(@"D:\Improvement\PrepareForTestReportTeacher\NotepadTest\TestResults\screenRecorder.mp4");
screenRecorder.StartRecording(screenRecorder, 2);

…

_logger.Info("end recordering");
screenRecorder.EndRecording();

(3)在TestExplorer中运行测试:EditorEnterText,

pytest ui自动化测试实战主要包括安装并配置环境、练习pytest基本使用、练习selenium基本使用以及使用pytest和selenium实现UI自动化测试四个部分。在练习pytest基本使用中,我们可以通过编写简单的用例格式来实现对测试目的和要求的覆盖。而在练习selenium基本使用中,我们可以使用脚本语言来模拟用户行为操作,接近真实用户场景,实现对web页面的自动化测试。通过这些实践,我们可以了解基于pytest和selenium的UI自动化测试的基本思路,并熟悉这两种测试工具的基本操作。此外,pytest还是一个非常成熟的Python测试框架,它具有简单的用例编写格式和丰富的插件,如pytest-html和pytest-rerunfailures等,可以生成漂亮的测试报告并实现失败用例的重复执行。通过实战,我们可以基本掌握pytest的使用方法。另外,还可以基于pytest实现测试用例收集方案、自定义参数化方案、页面元素定位数据存储方案、测试用例数据存储和维护方案等,以避免重复设计和维护复杂的问题。此外,还可以修改定制并汉化html测试报告,使其更加简洁、美观、易读。同时,还可以封装集成selenium、appium、minium和WinAppDriver等工具,以更好地支持不同平台和应用的自动化测试。总之,通过pytest ui自动化测试实战,我们可以全面了解和掌握UI自动化测试的基本原理和实践技巧。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [软件测试案例|使用 pytest+selenium 进行UI自动化测试](https://blog.csdn.net/qq_41640218/article/details/124031645)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [基于pytest设计自动化测试框架实战](https://blog.csdn.net/hotswwkyo/article/details/103211805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值