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 值,一切都按预期工作,并且侧面加载的应用程序不是问题
我无法加载侧面加载的 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 值,一切都按预期工作,并且侧面加载的应用程序不是问题