Собственно вот так выглядит код.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TestClass tcls = new TestClass();
ThreadStart thrd_start = new ThreadStart(tcls.RunTest);
Thread thrd = new Thread(thrd_start);
thrd.Start();
}
}
public class TestClass : Connect
{
public void RunTest()
{
string s = Path.GetFullPath("..\\..\\TCProject\\WinFormsApp.pjs");
Connect.RunTest("Test Self-Testing App", "Main", s);
Connect.Integration["RunRoutine"].Call("Main", "Functions", "ErrorDialog");
Connect.Integration["RunRoutine"]("Main", "Functions", "ErrorDialog");
//var p = Sys["Process"]("MainFormProcess");
//var f = Sys["WinFormsObject"]("MainForm");
//var b = Sys["WinFormsObject"]("buttonError");
//var res = b["Click"]();
//var bb = Aliases["WinFormsObject"]("buttonError")["Click"]();
Connect.StopTest();
}
}
при работе через COM т.е. ссылаясь на
using System.Runtime.InteropServices;
using TestComplete;
все работает отлично, спасибо что напомнили что и так можно.
А вот попытки работать с ТС через
using AutomatedQA.script;
using AutomatedQA.TestComplete;
ничего не получается. Строки с вызовом скрипта падают с TargetInvocationException, а в строках где есть обращение к контролу просто не находит ни процесс ни форму.