WinAppDriver无法与侧面加载的通用应用程序一起使用

时间:2019-10-09 19:04:59

标签: winappdriver

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

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

名称:AACE4B69.MazikAXCashier

发布者:CN = XXXXXXXXXXX

建筑:中性

ResourceId:

版本:2.4.1.9

PackageFullName:AACE4B69.MazikAXCashier_2.4.1.9_neutral__gfhc11b3bvd9y

InstallLocation:C:\ Program Files \ WindowsApps \ AACE4B69.MazikAXCashier_2.4.1.9_neutral__gfhc11b3bvd9y

IsFramework:错误

PackageFamilyName:AACE4B69.MazikAXCashier_gfhc11b3bvd9y

PublisherId:gfhc11b3bvd9y

IsResourcePackage:错误

IsBundle:错误

IsDevelopmentMode:错误

NonRemovable:False

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

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

2 个答案:

答案 0 :(得分:0)

我认为应用程序密钥通常短一些。您确定将其复制到代码中时没有犯错吗?请仔细检查应用程序ID是否存在错误。 enter image description here

我创建了Clocks应用程序的快捷方式,然后右键单击它。 “目标类型”和“目标”字段包含有效的应用程序密钥。

答案 1 :(得分: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值,一切都会按预期工作,并且侧面加载的应用程序不再是问题