[英]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.