我无法使用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,并导致应用程序加载。相反,我收到错误消息“系统找不到指定的文件”。
此应用程序是侧面加载的,我想知道是否与此有所不同。任何帮助或建议,表示赞赏。
答案 0 :(得分:0)
我认为应用程序密钥通常短一些。您确定将其复制到代码中时没有犯错吗?请仔细检查应用程序ID是否存在错误。
我创建了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值,一切都会按预期工作,并且侧面加载的应用程序不再是问题