Windows 应用程序驱动程序,连接到会话(驱动程序)时出错 "Could not find any recognizable digits."
Windows Application Driver, error "Could not find any recognizable digits." when connecting to session (driver)
我知道如何使用文件路径来启动 windows 应用程序并且它有效(下面的工作示例)。我正在编写测试,它们也可以工作,但我的问题是:如果应用程序已经是 运行,我如何为当前 [=33] 创建我的 "session"(通常称为 "driver") =]申请?
我已阅读 this article,其中解释了如何将新会话连接到已经 运行 的 Cortana。这是一个很好的例子,但我的应用程序是一个已启动的 exe,不是 windows 的一部分,我收到错误 "Could not find any recognizable digits."。
我做错了什么?
启动应用程序并创建 "session":
的工作代码
private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
protected static WindowsDriver<RemoteWebElement> session;
public static void Setup(TestContext context)
{
// Launch app and populate session
if (session == null)
{
// Create a new sessio
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", filepath /*The exeecutable's filepath on c drive*/);
//LaunchWPF app and wpf session
session = new WindowsDriver<RemoteWebElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
}
}
问题代码:
[TestMethod()]
public void Common_CreateSession_ForAlreadyRunningmyApp()
{
string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
IntPtr myAppTopLevelWindowHandle = new IntPtr();
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains("MyApp.Client.Shell"))
{
myAppTopLevelWindowHandle = clsProcess.Handle;
}
}
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("appTopLevelWindow", myAppTopLevelWindowHandle);
//Create session for app that's already running (THIS LINE FAILS, ERROR: : 'Could not find any recognizable digits.')
session = new WindowsDriver<RemoteWebElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
}
}
现在 github here 上有答案。您可以在 github 上看到我对 moonkey124 给出的答案进行了 3 次调整,其中 2 次是显而易见的(我的应用程序名称和一点睡眠命令),其中 1 次是将答案调整为 WPF 应用程序测试...
我知道如何使用文件路径来启动 windows 应用程序并且它有效(下面的工作示例)。我正在编写测试,它们也可以工作,但我的问题是:如果应用程序已经是 运行,我如何为当前 [=33] 创建我的 "session"(通常称为 "driver") =]申请?
我已阅读 this article,其中解释了如何将新会话连接到已经 运行 的 Cortana。这是一个很好的例子,但我的应用程序是一个已启动的 exe,不是 windows 的一部分,我收到错误 "Could not find any recognizable digits."。
我做错了什么?
启动应用程序并创建 "session":
的工作代码private const string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
protected static WindowsDriver<RemoteWebElement> session;
public static void Setup(TestContext context)
{
// Launch app and populate session
if (session == null)
{
// Create a new sessio
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", filepath /*The exeecutable's filepath on c drive*/);
//LaunchWPF app and wpf session
session = new WindowsDriver<RemoteWebElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
}
}
问题代码:
[TestMethod()]
public void Common_CreateSession_ForAlreadyRunningmyApp()
{
string WindowsApplicationDriverUrl = "http://127.0.0.1:4723";
IntPtr myAppTopLevelWindowHandle = new IntPtr();
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains("MyApp.Client.Shell"))
{
myAppTopLevelWindowHandle = clsProcess.Handle;
}
}
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("appTopLevelWindow", myAppTopLevelWindowHandle);
//Create session for app that's already running (THIS LINE FAILS, ERROR: : 'Could not find any recognizable digits.')
session = new WindowsDriver<RemoteWebElement>(new Uri(WindowsApplicationDriverUrl), appCapabilities);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
} }
现在 github here 上有答案。您可以在 github 上看到我对 moonkey124 给出的答案进行了 3 次调整,其中 2 次是显而易见的(我的应用程序名称和一点睡眠命令),其中 1 次是将答案调整为 WPF 应用程序测试...