【问题标题】:How do I get winappdriver to find an application file?如何让 winappdriver 找到应用程序文件?
【发布时间】:2020-09-09 17:32:30
【问题描述】:

我是 WinAppDriver 的新手,我正在尝试创建一个自动化测试。

我有一个应用程序,它有一个 theme.xml 文件,其中包含多个主题的主题信息(背景颜色、字体颜色等)。此文件与应用程序 exe 位于 bin 文件夹中:EXE 位于 \bin\app.exe 中。主题文件位于 \bin\Themes\Themes.xml

我能够让应用程序从我的第一个测试开始,但在加载时,它会尝试访问 Themes.xml 文件,但它在错误的位置查找:尝试在 winappdriver 文件夹中找到它- 'C:\Program Files (x86)\Windows 应用程序驱动程序\Themes\Themes.xml'。

如何让它在应用程序所在的 bin 文件夹中查找?

这是一个代码sn-p:

        private const string CSWAppId = @"C:\Applications\CSW\CSW2\CSWClient\bin\x86\Release\net48\CSWClient.exe";
        public WindowsDriver<WindowsElement> Session { get; set; }

        public CSWSession()
            {
            DesiredCapabilities appCapabilities = new DesiredCapabilities();
            appCapabilities.SetCapability( "app", CSWAppId );

            this.Session = new WindowsDriver<WindowsElement>( new Uri( WindowsApplicationDriverUrl ), appCapabilities );```

【问题讨论】:

    标签: c# automated-tests winappdriver


    【解决方案1】:

    对于安装程序,我们需要找到它的 AUMID。对于可门户的程序,我们有另一种连接方式。 在Win10中,所有运行的GUI程序,在可视化树上的最终父级是Desktop,所以我们需要先连接到Desktop,然后在Desktop中寻找我们已经启动的程序

    Setup Program VS Portalable Program

    UI testing for Windows apps with WinAppDriver and Appium

    // Set Desktop driver
    var desktopCapabilities = new DesiredCapabilities();
    var desktopCapabilities.SetCapability("app", "Root");
    var desktopDriver = new WindowsDriver<WindowsElement>(new Uri(http://127.0.0.1:4723), desktopCapabilities);
     
    // Find your app window ."CSWClient" is the process name, you can it from TaskManager
    var clientWindow = _desktopDriver.FindElementByName("CSWClient");
    
    // Connect to your app
    var clientWindowHandle = earthWindow.GetAttribute("NativeWindowHandle");
    clientWindowHandle = (int.Parse(earthWindowHandle)).ToString("x");
     var clientCapabilitie = new DesiredCapabilities();
    clientCapabilitie.SetCapability("appTopLevelWindow", earthWindowHandle);
    
    // Set your app driver
    var clientDriver = new WindowsDriver<WindowsElement>(new Uri(http://127.0.0.1:4723), clientCapabilitie);
     

    然后,你就可以做想做的事了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2020-12-03
      • 1970-01-01
      • 2022-08-14
      • 2014-02-13
      • 2019-07-26
      • 2021-05-15
      相关资源
      最近更新 更多