WinAppDriver 不能与侧面加载的通用应用程序一起使用

WinAppDriver not working with side loaded Universal Application

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

如果我尝试加载 Windows 计算器应用程序但我无法加载我的目标应用程序,我已验证我的代码有效。我收到一条错误消息 "The system cannot find the file specified"。我使用 PowerShell 中的 Get-AppxPackage 方法来获取我的目标应用程序的应用程序信息。该方法返回以下数据结构:

姓名:AACE4B69.MazikAXCashier

发布者:CN=XXXXXXXXXXX

架构:中性

资源编号:

版本: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 字段中的以下字段加载应用程序:

姓名

PackageFullName

PackageFamilyName

[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 并导致应用程序加载。相反,我收到错误消息 "The system cannot find the file specified".

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

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

我创建了时钟应用程序的快捷方式,然后右键单击它。 "Target type" 和 "Target" 字段包含有效的应用程序密钥。

好的,我想通了。我需要使用附加限定符的 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 值,一切都按预期工作,并且侧面加载的应用程序不是问题