Перейти к содержимому

anna_tester

Регистрация: 10 июн 2016
Offline Активность: 24 мар 2017 10:16
-----

Мои темы

Coded UI: HRESULT E_FAIL has been returned from a call to a COM compon

17 марта 2017 - 09:20

Здравствуйте!

Пробую написать тест с использованием Coded UI, который запускает приложение и вводит логин в соответствующее поле:

var app = ApplicationUnderTest.Launch(@"C:\app.exe");
var loginEdit = new WinEdit();
loginEdit.SearchProperties.Add(WinEdit.PropertyNames.ControlName, "textEditLogin");
loginEdit.Text = "test005";

Получаю ошибку: System.NotSupportedException: SetProperty "Text" is not supported on control type: Window.

 

Меняю метод ввода текста:

Keyboard.SendKeys(loginEdit, "test005");

Получаю другую ошибку: Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException: (Failed to get the message for an exception of type Microsoft.VisualStudio.TestTools.UITest.Extension.PlaybackFailureException due to an exception.) ---> System.Runtime.InteropServices.COMException: HRESULT E_FAIL has been returned from a call to a COM component

 

В чем может быть проблема? Прикладываю скриншот со свойствами контрола.

 


Кликнуть по кнопке DevExpress.XtraBars.BarButtonItem

10 июня 2016 - 08:40

Начала ковырять TestComplete 11.31 для .NET-приложения.

Пишу на C# скрипт.

 

В приложении есть окно с меню класса DevExpress.XtraBars.Ribbon.RibbonBarItems:

 

function getDocMenu()
{
  var docMenu = getDocCardWindow().WinFormsObject("ribbonMenu");
  return docMenu;
}
 
В этом меню есть кнопка с раскрывающимся выпадающем списком, собственно, цель - кликнуть по этой кнопке.
Путем поиска по Caption и Description (это свойство совпадает с текстом всплывающей подсказки) выяснила номер Item соответствующего этой кнопке.
Item класса DevExpress.XtraBars.BarButtonItem. У Item есть свойство Links, где дочерними являются два DevExpress.XtraBars.BarButtonItemLink, которые визуально по свойствам друг от друга ничем не отличаются. Их Caption и Description также совпадают с искомой кнопкой.
 
Пробую кликать так:
 
function addClick()
{
  var button = getDocMenu().Items.Item(210);
  var link = button.Links.Item(0);
  link.OnLinkClick();
  //link.OnLinkPress();

  //button.PerformClick();
  //button.OnClick(link);
}

В комментариях методы, которые также пыталась использовать для клика. Во всех этих случаях тест проходит успешно, но по факту клика нет, выпадающее меню не открывается.

 

Получилось кликнуть только следующим образом, но мне кажется, что это некорректно и должен быть какой-нибудь нормальный способ:

 

function addClick()
{
  var button = getDocMenu().Items.Item(210);
  var link = button.Links.Item(0);
  var X = link.ScreenBounds.X + (link.ScreenBounds.Width / 2);
  var Y = link.ScreenBounds.Y + (link.ScreenBounds.Height / 2);
  LLPlayer.MouseMove(X, Y, 0);
  LLPlayer.MouseDown(MK_LBUTTON, X, Y, 0);
}

Подскажите, пожалуйста, может быть, кто-то сталкивался и решил эту проблему.

Заранее спасибо.