1) Есть необходимость код скриптов (тестов) поместить непосредственно в тестируемое приложение. 2) Есть уже написанные тесты для определенных классов форм (в отдельных функциях) типа: ##### Код { ##### function testFormBasis(formObject) { var uGrid = formObj["WinFormsObject"]("FormBasis_Fill_Panel")["WinFormsObject"]("ultraGrid"); var toolBar = formObj["WinFormsObject"]("_FormBasis_Toolbars_Dock_Area_Top")["GetToolbarAtIndex"](0); var tools = toolBar["Tools"]; var saveTool; var addRowTool; var exitTool; var FormDictionary; for (var i=0;i<tools["Count"];i++) { switch (tools["Item"](i)["Key"]["OleValue"]) { case "SaveButtonTool" : saveTool = tools["Item"](i); break; case "AddRowButtonTool" : addRowTool = tools["Item"](i); break; case "ExitButtonTool" : exitTool = tools["Item"](i); break; } } if (uGrid["Rows"]["Count"]==0) { addRowTool["OnToolClick"](); LogWord["Message"]("Добавление нового основания"); uGrid["Rows"]["Item"](0)["Cells"]["Item"](3).Activated = true; .......... .......... и т.д. } ##### Код } #####
3) В приложении (C#) есть отдельный класс для тестов наследующий Connected ##### Код { ##### public class TestForm : Connect { public void RunTestFormBasis() { //Тест... } public void RunTestFormReport() { //Тест... } //................ } ##### Код } #####
и классы самих форм с методоми для запуска тестов ##### Код { ##### public partial class FormDocumentReport : Form, IFormDocument { ........ public void tcRunTest() { TestForm tcls = new TestForm(); ThreadStart thrd_start = new ThreadStart(tcls.RunTestFormBasis); Thread thrd = new Thread(thrd_start); thrd.Start(); } } ##### Код } #####
Теперь вопрос: Каким образом заменить в скриптах следующие участки formObj = Sys["Process"]("ProcName")["WinFormsObject"]("MDIParentForm")["WinFormsObject"]("MdiClient", "")["WinFormsObject"]("FormDocumentReport") ....... var uGrid = formObj["WinFormsObject"]("FormBasis_Fill_Panel")["WinFormsObject"]("ultraGrid"); var toolBar = formObj["WinFormsObject"]("_FormBasis_Toolbars_Dock_Area_Top")["GetToolbarAtIndex"](0); т.е. поскольку скрипт будет в коде приложения - нет ли возможности обращаться к текущему объекту (форме). Не знаю как правильно спросить.. Есть ли возможность обращаться к текущей форме не через длинный путь к ней Sys["Process"].... который к тому же может время от времени меняться, а как-нибудь непосредственно, типа:
var uGrid = this["WinFormsObject"]("FormBasis_Fill_Panel")["WinFormsObject"]("ultraGrid"); var toolBar = this["WinFormsObject"]("_FormBasis_Toolbars_Dock_Area_Top")["GetToolbarAtIndex"](0);