[英]How to switch focus between windows using WinAppDriver Java
我是使用 win 应用程序驱动程序的 Windows 自动化新手。 我们的应用程序是使用 chromium 浏览器开发的,我们正在使用 win app diver 进行自动化,因为我们尝试打开的主应用程序是基于 Windows 的。 当我单击确定按钮时,会打开另一个窗口(窗口 B)。 我有 2 个窗口打开窗口 1 和窗口 2。我需要在两个窗口上执行操作,因为我需要在两个窗口之间转移焦点。 当我使用 getwindowhandles() 方法时,我打开的窗口数为 1。如何使用 winapp 驱动程序在窗口之间切换。 感谢你的帮助。 谢谢
我在我的代码中使用:
this.driver.SwitchTo().Window(this.driver.WindowHandles[0]);
但是,我不希望这适用于您的情况,因为您打开的窗口数量为 1,这意味着没有第二个窗口可以切换到。 因此,在您的情况下,您可以使用根会话来附加到您的窗口:
AppiumOptions rootSessionOptions = new AppiumOptions();
rootSessionOptions.AddAdditionalCapability("app", "Root");
rootSessionOptions.AddAdditionalCapability("deviceName", "WindowsPC");
_driver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), rootSessionOptions);
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
var VSWindow = _driver.FindElementByName("Your project name without .csproj - Microsoft Visual Studio");
var VSTopLevelWindowHandle = VSWindow.GetAttribute("NativeWindowHandle");
VSTopLevelWindowHandle = (int.Parse(VSTopLevelWindowHandle)).ToString("x");
AppiumOptions VisualStudioSessionOptions = new AppiumOptions();
VisualStudioSessionOptions.AddAdditionalCapability("appTopLevelWindow", VSTopLevelWindowHandle);
_driver = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), VisualStudioSessionOptions);
_driver.SwitchTo().Window(_driver.WindowHandles[0]);
参考:
https://github.com/microsoft/WinAppDriver/issues/978
OpenQA.Selenium.WebDriverException: [windowHandle] 不是顶级窗口句柄解决方案
此代码适用于我(使用 Win 应用程序驱动程序的 Windows 自动化)与 C# //切换到桌面应用程序中的下一个窗口:
IList<string> toWindowHandles = new List<string>(_driver.WindowHandles);
Thread.Sleep(6000);
_driver.SwitchTo().Window(_driver.WindowHandles[0]);
使用 Java:
Thread.sleep(5000);
//Switch to the next window in desktop application:
Set<String> windowHandles = driver.getWindowHandles();
driver.switchTo().window(windowHandles.iterator().next());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.