WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动化测试服务
官方GitHub:
GitHub: WinAppDriver/Samples/C#/NotepadTest at master · microsoft/WinAppDriver (github.com)
该项目主要是依据官方NotepadTest的一个改进, 添加了三个功能:
- 打印日志
- 截图
- 录制测试过程视频
我的GitHub地址:
目录
在自己本机上成功运行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:
点击菜单栏中 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,