提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2021-04-13 10:29:11.893|阅读 139 次
概述:在v20.2版本中,技术团队增强了对WPF产品线UI测试自动化的支持,UI自动化现在包括更全面的自动化测试功能。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
下载DevExpress v20.2完整版 DevExpress v20.2汉化资源获取
DevExpress WPF 拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。
在v20.2版本中,技术团队增强了对WPF产品线UI测试自动化的支持,UI自动化现在包括更全面的自动化测试功能:
您可以使用UIAutomationClient库API创建自动测试,也可以使用基于UI自动化技术的任何UI测试库。
DevExpress WPF控件包含UI测试模式选项,使用时会对应用程序进行以下更改:
注意:我们使用测试了控件。
请按照以下步骤创建一个新的测试项目:
1. 打开Windows命令提示符,创建项目文件夹或导航到现有文件夹,然后使用以下命令:
2. 在Visual Studio中打开nunit测试项目。
3. 创建一个DesktopSession类,该类使您可以使用WinAppDriver UI记录器将生成的代码。
您可以在下面看到是如何实施的:
public class DesktopSession { const string WindowsApplicationDriverUrl = "//127.0.0.1:4723/"; WindowsDriver < WindowsElement > desktopSession; public DesktopSession(WindowsDriver < WindowsElement > source) { desktopSession = source; } public WindowsDriver < WindowsElement > DesktopSessionElement { get { return desktopSession; } } public WindowsElement FindElementByAbsoluteXPath(string xPath, int nTryCount = 10) { WindowsElement uiTarget = null; var index = xPath.IndexOf(value: '/', startIndex: 1); xPath = xPath.Substring(startIndex: index); while (nTryCount-->0) { try { uiTarget = desktopSession.FindElementByXPath(xpath: $ "/{xPath}"); } catch { Console.WriteLine($@"Find failed: ""{xPath}"""); } if (uiTarget != null) break; Thread.Sleep(millisecondsTimeout: 100); } return uiTarget; } public IOptions Manage() { return this.desktopSession.Manage(); } public void CloseApp() { this.desktopSession.CloseApp(); } }
4. 将以下test fixture复制并粘贴到UnitTest1.cs文件中:
public class Tests { Process pWad; const string PathToTheDemo = @"C:\Users\Public\Documents\DevExpress Demos 20.2\Components\WPF\DevExpress.OutlookInspiredApp.Wpf\bin\DevExpress.OutlookInspiredApp.Wpf.exe"; protected DesktopSession desktopSession { get; private set; } [OneTimeSetUp] public void FixtureSetup() { StartWAD(); var options = new AppiumOptions(); options.AddAdditionalCapability(capabilityName: "app", capabilityValue: PathToTheDemo); options.AddAdditionalCapability(capabilityName: "deviceName", capabilityValue: "WindowsPC"); options.AddAdditionalCapability(capabilityName: "platformName", capabilityValue: "Windows"); var driver = new WindowsDriver < WindowsElement > (new Uri("//127.0.0.1:4723"), options); desktopSession = new DesktopSession(driver); WaitSplashScreen(driver); } static void WaitSplashScreen(WindowsDriver < WindowsElement > driver) { var cwh = driver.CurrentWindowHandle; while (driver.WindowHandles.Contains(cwh)) Thread.Sleep(1000); driver.SwitchTo().Window(driver.WindowHandles[0]); } private void StartWAD() { var psi = new ProcessStartInfo(@"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe"); psi.EnvironmentVariables.Add("DX.UITESTINGENABLED", "1"); pWad = Process.Start(psi); } [OneTimeTearDown] public void FixtureTearDown() { desktopSession.CloseApp(); pWad.Kill(); } [SetUp] public void Setup() {} [Test] public void Test1() { Assert.Pass(); } }
FixtureSetup方法执行以下操作:
将DevExpress WPF控件切换到UI测试模式,为此请将被测应用程序(在应用程序启动时)将DX.UITESTINGENABLED环境变量设置为1或将 属性设置为true。此模式产生以下变化:
请按照以下步骤记录测试:
1. 以管理员身份运行WinAppDriver UI记录器。
2. 在Test1方法中设置一个断点。
3. 调试Test1测试,这将运行OutlookInspired演示应用程序并启用UI测试模式。
4. 单击WinAppDriver UI记录器窗口中的Record按钮。
将鼠标悬停在New Employee按钮上,然后等待,直到记录器在按钮周围显示蓝色边框为止。 这意味着记录器已准备好捕获输入,点击按钮。
将鼠标悬停在First Name文本字段上,然后等待,直到记录仪准备好捕获输入,输入一个值。
对Last Name、Title、Mobile Phone和Email文本字段重复上一步。
记录Save & Close按钮的点击。
5. 在Recorder窗口中,单击Pause and copy按钮将生成的代码复制到剪贴板。
上面概述的方法有一些缺点:
我们可以重写测试以解决上述问题(并加快测试速度)。 您可以分析记录的xpath或使用检查工具来获取元素属性,例如Names、ClassNames和AccessibilityIds。
使用WinAppDriver的FindElementByName、FindElementByClassName和FindElementByAccessibilityId方法查找应用程序元素,这些方法比FindElementByAbsoluteXPath方法要快。 修改应用程序的布局时,基于这些方法的测试不会失败。
[Test][Order(0)] public void CreateEmployee() { var desktopElement = desktopSession.DesktopSessionElement; var bNewEmployee = desktopElement.FindElementByName("New Employee"); bNewEmployee.Click(); WindowsElement newEmployeeWindow = null; while (newEmployeeWindow == null) newEmployeeWindow = desktopElement.FindElementByName("Employee (New)"); newEmployeeWindow.FindElementByName("First Name").FindElementByClassName("TextEdit").SendKeys("John"); newEmployeeWindow.FindElementByName("Last Name").FindElementByClassName("TextEdit").SendKeys("Doe"); newEmployeeWindow.FindElementByName("Title").FindElementByClassName("TextEdit").SendKeys("CTO"); newEmployeeWindow.FindElementByName("Mobile Phone").FindElementByClassName("ButtonEdit").SendKeys("1111111111"); newEmployeeWindow.FindElementByName("Email").FindElementByClassName("ButtonEdit").SendKeys("john.doe@dx-email.com"); newEmployeeWindow.FindElementByName("Save & Close").Click(); }
重写后的测试仅需25秒。
DevExpress技术交流群3:700924826 欢迎一起进群讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:慧都网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
优秀的界面控件开发包,帮助企业构建卓越应用!
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress WPF Subscription高效MVVM开发模式,WPF界面解决方案首选工具,帮助企业实现酷炫动效界面。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢