winappdriver не может найти элемент, используя - PullRequest
0 голосов
/ 16 октября 2019

Я новичок в области автоматизации, и я пытаюсь автоматизировать приложение WPF с помощью WinAppDriver с C #. Я могу загрузить приложение, но получаю сообщение об ошибке типа {"Не удается найти элемент на странице с использованием заданных параметров поиска."} При попытке найти элемент с Name / AccessibilityId даже после сохранения времени ожидания.

См. Ниже:

POST /session/09551C9F-CF20-4C2B-A900-F17D2483F9D8/element HTTP/1.1
Accept: application/json, image/png
Content-Length: 45
Content-Type: application/json;charset=utf-8
Host: 127.0.0.1:4723

{"using":"accessibility id","value":"TxtPwd"}
HTTP/1.1 404 Not Found
Content-Length: 139
Content-Type: application/json

{"status":7,"value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters."}}

Я не знаю, что происходит. Любые предложения?

Мне понравилось - проверить элементы и идентификатор автоматизации / имя элемента с помощью инструмента проверки - установить режим разработчика активным - время ожидания перед поиском элемента

 var aDesiredCapabilities = new DesiredCapabilities();
             aDesiredCapabilities.SetCapability("app", @"PathToApplication");
             aDesiredCapabilities.SetCapability("deviceName", "Windows 10");

             var aWindow = new WindowsDriver<WindowsElement>(new Uri("http://127.0.0.1:4723"), aDesiredCapabilities);
             aWindow.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

             aWindow.FindElementByAccessibilityId("TxtPwd").SendKeys("qwerty");
             aWindow.FindElementByAccessibilityId("TxtUser").SendKeys("123456");
             aWindow.FindElementByAccessibilityId("Clear").Click();

             aWindow.FindElementByAccessibilityId("TxtPwd").SendKeys("qwerty");
             aWindow.FindElementByAccessibilityId("TxtUser").SendKeys("123456");
             aWindow.FindElementByAccessibilityId("Login");

1 Ответ

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

Отображается ли это поле пароля для имени пользователя во всплывающем окне?

После того, как вы запустите приложение, перед тем, как пытаться получить доступ к элементам пользовательского интерфейса приложения, переведите его в спящий режим. Я предлагаю следующее.

System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10));

Лучше было бы использовать экземпляр класса WebDriverWait для ожидания загрузки элемента.

WebDriverWait wdv = new WebDriverWait(sessionAppWinForms, TimeSpan.FromSeconds(10));
var txtPwd = aWindow.FindElementByAccessibilityId("TxtPwd");
wdv.Until(x => txtPwd.Displayed);

Обновление: я предлагаю проверять элементы управления пользовательского интерфейса с помощью WinAppDriver UI Recorder. Последняя версия не работала на моем ПК, поэтому я рекомендую использовать версию 1.0. Ссылка для скачивания приведена ниже. https://github.com/microsoft/WinAppDriver/releases/tag/UiR_v1.0-RC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...