0

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

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

名称:AACE4B69.MazikAXCashier

发布者:CN=XXXXXXXXXXX

架构:中性

资源编号:

版本:2.4.1.9

包全名:AACE4B69.MazikAXCashier_2.4.1.9_neutral__gfhc11b3bvd9y

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

是框架:假

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 并导致应用程序加载。相反,我收到错误消息“系统找不到指定的文件”。

这个应用程序是侧面加载的,我想知道这是否有什么不同。任何帮助或建议表示赞赏。

4

2 回答 2

0

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

于 2019-10-11T18:20:42.467 回答
0

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

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

于 2019-10-11T13:03:31.727 回答