You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Appium在C#中无法启动Windows应用的技术求助

问题描述

我正尝试在Visual Studio中使用C#结合Appium自动化一款Windows应用,代码编译运行无错误,WinAppDriver已在http://127.0.0.1:4723启动,但目标应用(路径C:\OSS2\OSSAPUpdate.exe)无法启动。

已验证以下内容:

  • OSSAPUpdate.exe的路径正确
  • 设备处于开发者模式
  • WinAppDriver以管理员权限运行
  • Visual Studio、Appium和Selenium的版本均为最新且兼容

我的代码如下:

using NUnit.Framework;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
using System;

namespace automated_test
{
    public class Tests
    {
        private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
        private const string YourApplicationId = "OSSAP2";
        protected WindowsDriver<WindowsElement>? session;

        [SetUp]
        public void Setup()
        {
            if (session == null)
            {
                AppiumOptions appiumOptions = new AppiumOptions();
                appiumOptions.AddAdditionalCapability("app", @"C:\OSS2\OSSAPUpdate.exe");
                appiumOptions.AddAdditionalCapability("deviceName", "WindowsPC");

                try
                {
                    session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), appiumOptions);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                // 此处存在语法错误:多了中文"秒"字
                session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);秒
            }
        }

        [TearDown]
        public void TearDown()
        {
            if (session != null)
            {
                session.Quit();
                session = null;
            }
        }

        [Test]
        public void LoginTest()
        {
            var loginField = session.FindElementByAccessibilityId("txt_LoginID");
            loginField.SendKeys("5165");
        }
    }
}

排查与解决建议

  • 修复代码语法错误:Setup方法最后一行多了中文"秒"字,这会导致运行时异常,阻止后续流程执行。删除多余的"秒"字,确保代码正常执行。
  • 检查应用启动权限:如果目标应用需要管理员权限才能启动,尝试在AppiumOptions中添加appArguments参数,或手动启动应用后,通过appTopLevelWindow参数连接已运行的窗口(需先获取窗口句柄)。
  • 启用WinAppDriver详细日志:启动WinAppDriver时添加--verbose参数,查看日志中关于应用启动的错误信息,比如路径是否被正确识别、是否存在权限限制或依赖缺失。
  • 替换应用启动方式:若路径启动失败,尝试使用应用的快捷方式路径作为app参数,或通过PowerShell获取应用的Package Family Name(针对UWP应用)后替换路径。
  • 验证session状态:在catch块中增加对session是否为null的判断,若session创建失败,避免后续空引用操作,同时打印更详细的异常堆栈信息定位问题。
  • 检查应用启动依赖:确认目标应用是否需要特定组件、服务或环境变量支持,手动启动正常但自动化启动失败时,需确保WinAppDriver的运行环境满足应用依赖。
  • 调整等待时间:若应用启动较慢,可在创建session后增加显式等待(如WebDriverWait),确保应用完全加载后再执行后续操作。

内容的提问来源于stack exchange,提问作者pony1229

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:26:01