Как получить ссылку на объект в testcomplete + js?

У меня есть действия ODT.Class с кодом

function SetValue(text){
HowToGetObject? .Keys(text + "[Enter]")
}

И элемент ODT.Data.CustomerName имеет тип класса Actions, поэтому я могу использовать метод SetValue. Также у него есть метод GetObject, который позволяет мне получить объект:

function GetObject(){
return NameMapping.Sys.Orders.OrderForm.Group.Customer
}

Приведенный ниже код работает с системным методом SetText().

ODT.Data.CustomerNameTextField.GetObject().SetText("Text")

Мне нужно каким-то образом получить ссылку на объект в моем методе SetValue (text), чтобы сделать ниже

ODT.Data.CustomerNameTextField.GetObject().SetValue("Text")

Меня интересует системный метод SetText(string)? Как это работает?

Будем рады любой помощи. Заранее спасибо, Денис


person Denys Medvediev    schedule 27.03.2016    source источник
comment
кажется, мне нужно переопределить функцию SetText с помощью прототипа? есть идеи, ребята?   -  person Denys Medvediev    schedule 28.03.2016


Ответы (1)


Самый простой способ — получить объект прямо в методе SetValue:

function SetValue(text){
  This.GetObject().Keys(text + "[Enter]")
}

Стандартный метод SetText может применяться к редакторам, которые могут иметь текстовое значение, и просто программно помещает текст в эти редакторы.

Кстати, насколько мне известно, функциональность ODT скоро будет полностью удалена из TestComplete. Дополнительные сведения см. в разделе объектно-ориентированное тестирование. Вот пример, демонстрирующий, как использовать подход ООП без функции ODT:

function customClass(newObjName)
{
  this.objName = newObjName; 
}

customClass.prototype.getObject = function()
{
  return eval(this.objName);
}

customClass.prototype.setValue = function(text)
{
  this.getObject().Keys(text + "[Enter]");
}

function Test()
{
  var obj = new customClass('Sys.Process("notepad").Window("Notepad").Window("Edit")');
  obj.setValue("Test");
}
person Dmitry Nikolaev    schedule 28.03.2016
comment
это не работает, я жду всплывающего окна SetValue (текст), а затем тест не проходит - person Denys Medvediev; 28.03.2016
comment
У вас есть пример проекта для него? // Define a custom class function customClass() { // Define a class property var classProperty; } // Define a class routine customClass.prototype.classRoutine = function() { // ... } function Test() { var obj; // Create an instance of the class obj = new customClass(); // Set the class property obj.classProperty = 41; // Call the class routine obj.classRoutine(); } - person Denys Medvediev; 28.03.2016
comment
Я поместил пример кода, который не требует ODT для ответа. - person Dmitry Nikolaev; 28.03.2016
comment
Пример того, как использовать подход ООП без функции ODT, отлично работает в одном файле, но затем я пытаюсь использовать его в отдельных тестах, но это не работает. Вы можете помочь мне? Заранее спасибо, Денис - person Denys Medvediev; 28.03.2016
comment
Это должно хорошо работать и с несколькими юнитами. Поместите код класса в модуль (скажем, MyClassUnit) и включите этот модуль в тестовый модуль с помощью оператора //USEUNIT MyClassUnit. После этого вы сможете использовать тестовую процедуру из моего примера во втором модуле без каких-либо изменений. - person Dmitry Nikolaev; 29.03.2016