При использовании WinAppDriver мне нужна помощь по изменению фокуса при открытии нового окна в приложении WPF - PullRequest
2 голосов
/ 15 октября 2019

Мне нужна помощь по изменению фокуса при открытии нового окна в приложении WPF с помощью WinAppDriver

С помощью WinAppDriver я могу открыть приложение WPF и выполнить тестирование с использованием приведенного ниже кода. Мне нужна помощь покак изменить фокус при открытии нового окна в приложении WPF. Проблема с приложениями WPF заключается в том, что вы не можете использовать стандартный метод, поскольку драйвер не распознает приложение. должен быть способ помочь переключить фокус или хотя бы открыть существующее окно приложения WPS, чего я сейчас не могу сделать. если бы кто-нибудь мог помочь, я был бы очень признателен.

// to open the standard app
AppiumOptions options2 = new AppiumOptions();
options2.AddAdditionalCapability("app", "Application new window");
options2.AddAdditionalCapability("Window", "WindowsPC");

//to open a WPS application
AppiumOptions options = new AppiumOptions();
options.AddAdditionalCapability("app", @"C:\Path\Debug\Application.exe");
options.AddAdditionalCapability("deviceName", "WindowsPC");
_driver = new WindowsDriver(new Uri("http://127.0.0.1:4723"), options);

{"desiredCapabilities":{"app":"[@Name =\"Loan Folder 14847\"]","Window":"WindowsPC","platformName":"Windows"},"capabilities":{"firstMatch":[{"platformName":"Windows"}]}}
HTTP/1.1 500 Internal Error
Content-Length: 101
Content-Type: application/json

{"status":13,"value":{"error":"unknown error","message":"The system cannot find the file specified"}}

1 Ответ

1 голос
/ 17 октября 2019

Я смог выяснить, как сосредоточиться на открытии новых окон в приложении WPF, и хотел опубликовать свое решение, чтобы помочь кому-то ниже.

//Setup
private WindowsDriver _driver;

AppiumOptions options = new AppiumOptions();
options.AddAdditionalCapability("app", @"C:\Desktop\Debug\application.exe");
options.AddAdditionalCapability("deviceName", "WindowsPC");

_driver = new WindowsDriver(new Uri("http://127.0.0.1:4723"), options);
_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

//Test
_driver.FindElementByAccessibilityId("Login").Click();
Thread.Sleep(5000);
_driver.FindElementByName("button").Click();
//Opens a new window
_driver.FindElementByName("Open").Click();
Thread.Sleep(2000);
//Solution - switches to the latest window
_driver.SwitchTo().Window(_driver.WindowHandles.First());
//can click on buttons in the new Window
_driver.FindElementByName("buttons").Click();
//Opens another new Window
_driver.FindElementByName("Open another window").Click();
Thread.Sleep(2000);
//Solution - switches to the latest window
_driver.SwitchTo().Window(_driver.WindowHandles.First());
//can click on buttons in the new Window
_driver.FindElementByName("button3").Click();
...