编写测试(.NET)

The Appium .NET Client is an official Appium client in C#. This driver is an extension of the Selenium C# client. It has all the functionalities of the regular driver, but add Appium-specific methods on top of this. The driver is available on the public NuGet Gallery as Appium.WebDriver.

现在,我们进入目录并创建一个新的 NUnit 项目。我们还将添加对 Appium.Net 驱动程序和其他依赖项的引用。

cd dotnet-client
dotnet new nunit --name appiumtest 

cd appiumtest

# This will install the latest 5.x version
dotnet add package Appium.WebDriver  --prerelease
dotnet add package Newtonsoft.Json --version 13.0.3

完成后,您的项目应该有一个占位符文件 UnitTest1.cs。我们将替换代码以包含 OpenQA 命名空间、驱动程序的初始化以及实际测试。

UnitTest1.cs
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium.Enums;

namespace appiumtest;

public class Tests
{
    private AndroidDriver _driver;

    [OneTimeSetUp]
    public void SetUp()
    {
        var serverUri = new Uri(Environment.GetEnvironmentVariable("APPIUM_HOST") ?? "http://127.0.0.1:4723/");
        var driverOptions = new AppiumOptions() {
            AutomationName = AutomationName.AndroidUIAutomator2,
            PlatformName = "Android",
            DeviceName = "Android Emulator",
        };

        driverOptions.AddAdditionalAppiumOption("appPackage", "com.android.settings");
        driverOptions.AddAdditionalAppiumOption("appActivity", ".Settings");
        // NoReset assumes the app com.google.android is preinstalled on the emulator
        driverOptions.AddAdditionalAppiumOption("noReset", true);

        _driver = new AndroidDriver(serverUri, driverOptions, TimeSpan.FromSeconds(180));
        _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
    }

    [OneTimeTearDown]
    public void TearDown()
    {
        _driver.Dispose();
    }

    [Test]
    public void TestBattery()
    {
        _driver.StartActivity("com.android.settings", ".Settings");
        _driver.FindElement(By.XPath("//*[@text='Battery']")).Click();
    }
}

注意

本指南不涵盖 dotnet 客户端库或此处发生的所有内容的完整概述,因此我们目前不会详细解释代码本身。您可能需要特别阅读 Appium Capabilities,并熟悉 dotnet 客户端驱动程序文档,以更全面地了解您看到的各种 API 命令及其目的。

基本上,这段代码正在执行以下操作

  1. 定义一组“功能”(参数)发送到 Appium 服务器,以便 Appium 知道您要自动执行什么类型的东西。其中一些参数可以使用环境变量覆盖。
  2. 在内置的 Android 设置应用程序上启动 Appium 会话。
  3. 找到“电池”列表项并单击它。
  4. 结束 Appium 会话。

就是这样!让我们试一试。在运行测试之前,请确保您在另一个终端会话中运行了 Appium 服务器,否则您将收到有关无法连接到服务器的错误。然后,您可以执行脚本

dotnet test

# Example output:
# Starting test execution, please wait...
# A total of 1 test files matched the specified pattern.

# Passed!  - Failed:     0, Passed:     1, Skipped:     0, Total:     1, Duration: 323 ms - appiumtest.dll (net7.0)

如果一切顺利,您将看到设置应用程序打开并在模拟器中导航到“电池”视图,然后应用程序再次关闭。

恭喜您,您已经开始了 Appium 之旅!继续阅读以了解一些 下一步 以探索。