簡體   English   中英

如何使用 WinAppDriver Java 在窗口之間切換焦點

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM