彩票走势图

logo Devexpress WPF控件文档中心

如何用Appium测试控件


立即下载DevExpress WPF

DevExpress WPF控件支持Appium框架与WinAppDriver UI测试自动化。本主题展示了如何准备环境和创建测试。

准备环境

按照以下步骤使用Appium与DevExpress WPF控件:

  • 启用Windows开发人员模式。
  • 安装winappdriver。
  • 在您的项目中引用Appium.WebDriver nuget package。
  • 将DevExpress WPF控件切换到UI测试模式。要做到这一点,请设置DX.UITESTINGENABLED 环境变量为1,或者ClearAutomationEventsHelper.UITestingEnabled属性在被测试的应用程序启动时为true。这种模式导致以下变化:
    • 动画被禁用。
    • 上下文菜单仅在鼠标单击时打开,当鼠标指针位于菜单上方时不打开。
    • UI Automation tree经过调整,使UI测试更加稳定和可靠。

提示:示例项目使用 属性来指定DX.UITESTINGENABLED环境变量。

:Test the OutlookInspiredApp with Appium

创建测试

要使用Appium API,请创建一个WindowsDriver实例。下面的代码示例运行测试过的应用程序并创建一个WindowsDriver会话:

UnitTest1.cs:

var options = new AppiumOptions();
options.AddAdditionalCapability(capabilityName: "app", capabilityValue: PathToTheApp);
options.AddAdditionalCapability(capabilityName: "deviceName", capabilityValue: "WindowsPC");
options.AddAdditionalCapability(capabilityName: "platformName", capabilityValue: "Windows");
options.AddAdditionalCapability(capabilityName: "ms:experimental-webdriver", capabilityValue: true);
var driver = new WindowsDriver<WindowsElement>(new Uri("//127.0.0.1:4723"), options);

点击复制

UnitTest1.vb:

Dim options = New AppiumOptions()
options.AddAdditionalCapability(capabilityName:="app", capabilityValue:=PathToTheApp)
options.AddAdditionalCapability(capabilityName:="deviceName", capabilityValue:="WindowsPC")
options.AddAdditionalCapability(capabilityName:="platformName", capabilityValue:="Windows")
options.AddAdditionalCapability(capabilityName:="ms:experimental-webdriver", capabilityValue:=True)
Dim driver = New WindowsDriver(Of WindowsElement)(New Uri("//127.0.0.1:4723"), options)

点击复制

要测试一个正在运行的应用程序,将上面代码示例中的" app " capacityname行更改为以下内容:

UnitTest1.cs :

options.AddAdditionalCapability(capabilityName: "appTopLevelWindow", capabilityValue: $"0x{WindowHandle.ToInt64():X8}");

点击复制

UnitTest1.vb:

options.AddAdditionalCapability(capabilityName:="appTopLevelWindow", capabilityValue:=$"0x{WindowHandle.ToInt64()}")

点击复制

提示:如果您在与被测试应用程序相同的进程中托管测试,则测试应该在单独的线程中。在这种情况下,UI线程可以同步处理windows消息。

使用 WinAppDriver UI recorder

您可以使用工具来生成测试,在这种情况下,测试应用程序需要 类。这种方法有以下缺点:

  • 这些测试使用FindElementByXPath方法来查找元素,这个方法比较慢,因为它要解析整个可视树。
  • 这些测试很难维护,因为它们使用绝对xpath来查找元素,应用程序布局的改变可能会破坏测试。
  • 这些试题很难读懂,参考我们的上的提交,比较记录的测试和基于Appium api的测试可读性。
使用 Appium API

使用WinAppDriver的FindElementByName、FindElementByClassName和FindElementByAccessibilityId方法来查找应用程序元素。这些方法的工作速度比FindElementByXPath方法快,修改应用程序布局时,基于这些方法的测试不会失败。

您可以使用来查找元素名、类名和自动化 ids。

提示:您可以指定应用程序元素的 附加属性来增强测试的可读性。

示例

下面的代码打开“New Employee”窗口,找到带有TextEdit类的“First Name”元素,输入“John”,然后点击“Save & Close”元素:

C#:

[Test]
public void CreateEmployee()
{
var bNewEmployee = driver.FindElementByName("New Employee");
bNewEmployee.Click();

WindowsElement newEmployeeWindow = null;
while (newEmployeeWindow == null)
newEmployeeWindow = driver.FindElementByName("Employee (New)");

newEmployeeWindow.FindElementByName("First Name").FindElementByClassName("TextEdit").SendKeys("John");
newEmployeeWindow.FindElementByName("Save & Close").Click();
}

点击复制

Visual Basic:

Public Sub CreateEmployee()
Dim driver = desktopSession.DesktopSessionElement
Dim bNewEmployee = driver.FindElementByName("New Employee")
bNewEmployee.Click()
Dim newEmployeeWindow As WindowsElement = Nothing

While newEmployeeWindow Is Nothing
newEmployeeWindow = driver.FindElementByName("Employee (New)")
End While

newEmployeeWindow.FindElementByName("First Name").FindElementByClassName("TextEdit").SendKeys("John")
newEmployeeWindow.FindElementByName("Save & Close").Click()
End Sub

点击复制

:Test theOutlookInspiredApp with Appium

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP