【问题标题】:WinAppDriver not working with side loaded Universal ApplicationWinAppDriver 不适用于侧面加载的通用应用程序
【发布时间】:2019-10-15 15:59:21
【问题描述】:

我无法使用 WinAppDriver 加载侧面加载的 Windows 通用应用程序

如果我尝试加载 Windows 计算器应用程序但我无法加载我的目标应用程序,我已验证我的代码可以正常工作。我收到一条错误消息“系统找不到指定的文件”。我使用 PowerShell 中的 Get-AppxPackage 方法来获取目标应用程序的应用程序信息。该方法返回的数据结构如下:

名称:AACE4B69.MazikAXCashier

发布者:CN=XXXXXXXXXXX

架构:中性

资源ID:

版本:2.4.1.9

PackageFullName : AACE4B69.MazikAXCashier_2.4.1.9_neutral__gfhc11b3bvd9y

安装位置:C:\Program Files\WindowsApps\AACE4B69.MazikAXCashier_2.4.1.9_neutral__gfhc11b3bvd9y

IsFramework : 假

PackageFamilyName : AACE4B69.MazikAXCashier_gfhc11b3bvd9y

PublisherId : gfhc11b3bvd9y

IsResourcePackage : 假

IsBundle:错误

IsDevelopmentMode : 假

不可移动:错误

依赖关系:{Microsoft.WinJS.2.0_1.0.9600.17018_neutral__8wekyb3d8bbwe}

IsPartiallyStaged : 假

SignatureKind:开发者

状态:正常

我已尝试使用 AppID 字段中的以下字段加载应用程序:

名字

包全名

包家族名称

[TestFixture]
public class Tests
{

    protected static WindowsDriver<WindowsElement> windowSession;

    public const String AppID = "AACE4B69.MazikAXCashier_2.4.1.9_neutral__gfhc11b3bvd9y";
    public const String driverURL = "http://127.0.0.1:4723";


    [SetUp]
    public void Setup()
    {

        if (windowSession == null)
        {

            // Configure the application connection and load data
            AppiumOptions opt = new AppiumOptions();
            opt.AddAdditionalCapability("app", AppID);

            try
            {
                // Create the driver object
                windowSession = new WindowsDriver<WindowsElement>(new Uri(driverURL), opt);
                Assert.IsNotNull(windowSession);

            }
            catch (Exception e)
            {
                Console.WriteLine("Unable to open application with error: " + e.Message);
            }
        }
    }

    [Test]
    public void Test1()
    {
        Assert.Pass();
    }}

我希望这些名称之一是所需的应用程序 ID 并导致应用程序加载。相反,我收到错误消息“系统找不到指定的文件”。

这个应用程序是侧面加载的,我想知道这是否有什么不同。感谢您提供任何帮助或建议。

【问题讨论】:

    标签: winappdriver


    【解决方案1】:

    好的,我找到了诀窍。我需要使用附加限定符的 PackageFamilyName。就我而言,这是

        public const String AppID = "AACE4B69.MazikAXCashier_gfhc11b3bvd9y!App";
    

    我通过两步过程获得了这个值。我像以前一样使用 Powershell Get-appxPackage Mazik 来获取 PackageFamilyName。然后我将“!App”附加到这个字符串以获得所需的值。我根据在线文章中找到的另一个 Powershell 脚本确定了“!App”字符串。我使用以下脚本来确定附加的 ID 值是什么:

    (Get-AppxPackageManifest (Get-AppxPackage Mazik)).package.applications.application.id

    这返回了“App”,我按照上面的描述构造了最终的字符串。看起来“!App”是所需 AppID 的典型结尾,但我必须假设不同情况有不同的值。一旦我得到正确的 AppID 值,一切都按预期工作,侧面加载的应用程序不是问题

    【讨论】:

      【解决方案2】:

      我相信应用程序密钥通常会短一些。您确定在将其复制到您的代码时没有犯错吗?请仔细检查应用 ID 是否有错误。

      我创建了时钟应用程序的快捷方式,然后右键单击它。 “目标类型”和“目标”字段包含工作的确切应用程序密钥。

      【讨论】:

      • 我相信我应该使用名称字段值:AACE4B69.MazikAXCashier。我也使用了该值,但它也不起作用。正如我上面所说,我尝试使用 Name、PackageFullName 和 PackgeFamilyName 作为 AppID 值,但所有三个都失败并出现错误“系统找不到指定的文件”。恰好 PackageFull 名称是我尝试的最后一个字段,并且仍然显示在代码中。有关如何找到替代 AppID 值的任何建议。问题一定是我的 AppID 有问题或与侧面加载应用程序有关,但我找不到另一个 AppID
      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2022-06-30
      相关资源
      最近更新 更多