有没有人使用Appium / WinAppDriver来自动化桌面应用程序。

时间:2017-04-11 23:59:56

标签: desktop windows-applications

我正在寻找自动化Windows应用程序,并研究要使用的工具。我遇到过Appium / WinAppDriver,但不确定它到目前为止在任何地方都有不错的使用方法....对此我感到很满意。

1 个答案:

答案 0 :(得分:0)

我目前正在使用WinAppDriver来自动化WPF程序。它与Selenium非常相似,如果您有任何经验,那么我建议使用WinAppDriver而不是White。你也可以使用Selenium WebDriverWait这是一个巨大的奖金。

Windows SDK附带了一个名为“Inspect”的工具,可以让您检查类似于Web浏览器开发工具的Windows应用程序。

您只需启动驱动程序(类似于Selenium),但您还需要启动WinApp进程。

C#示例:

protected WindowsDriver<WindowsElement> GetWindowsDriver()
{
    var appCapabilities = new DesiredCapabilities();
    appCapabilities.SetCapability("app", 
    PathHelper.GetClientInstallPath() + "APPLICATION.exe");

    appCapabilities.SetCapability("deviceName", "WindowsPC");

    if (!IsWinAppDriverProcesssRunning())
    {
        StartWinAppProcessRunning();
    }

    var driver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), appCapabilities);
    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

    return driver;
}

private static bool IsWinAppDriverProcesssRunning()
{
    const string processName = "WinAppDriver";

    var existingProcesses = Process.GetProcessesByName(processName);
    return existingProcesses.Any();
}

private static void StartWinAppProcessRunning()
{
    const string winAppDirectory = @"C:\Program Files (x86)\Windows Application Driver";
    var winAppProcess =
        new Process
        {
            StartInfo =
            {
                FileName = Path.Combine(winAppDirectory, "WinAppDriver.exe"),
                WindowStyle = ProcessWindowStyle.Hidden,
                WorkingDirectory = winAppDirectory
            }
        };

    winAppProcess.Start();
}