저는 2 일 전입니다. .NET C# 코더에서 제어를 시도합니다. ProjectA - WinFormProjectB - C# console app.다른 C# 콘솔 앱에서 WinForm을 제어 할 수 있습니까?
기본적으로 ProjectA의 WebBrowser 컨트롤 내에서 테스트를 자동화하기 위해 WatiN을 사용하고 있습니다.
winformWithWebBrowserTest.exe를 실행하는 ProjectB를 실행할 때 webbrowser가있는 winform이 나타납니다. 그러나 form1에 액세스하지 못합니다. 어떻게 ProjectB에서 웹 브라우저 컨트롤에 액세스 할 수 있습니까 ???
오류 :
System.Runtime.IteropServices.InvalidComObjectException
COM
object that has been separated from its underlying RCW cannot be used
PROJECTA의 WinForm : (winformWithWebBrowserTest.exe)
namespace WindowsFormsApplication1
{
public partial class Form1 : System.Windows.Forms.Form
{
public Form1()
{
InitializeComponent();
}
}//end class
}//end namespace
프로젝트 B의 콘솔 응용 프로그램 (WatinConsoleExample.cs)
namespace ConsoleApplication1
{
class WatinConsoleExample
{
[STAThread]
static void Main(string[] args)
{
//run ProjectA exe
System.Diagnostics.Process Proc = new System.Diagnostics.Process();
Proc.StartInfo.FileName = "C:\\Users\\m-takayashiki\\Documents\\Visual Studio 2010\\Projects\\winformWithWebBrowserTest\\winformWithWebBrowserTest\\bin\\Release\\winformWithWebBrowserTest.exe";
Proc.Start();
WindowsFormsApplication1.Form1 form1 = new Form1();
var t = new Thread(() =>
{
Settings.AutoStartDialogWatcher = false;
//exception occurs below ..........
var ie = new IE(form1.webBrowser1.ActiveXInstance);
ie.GoTo("http://www.google.com");
ie.TextField(Find.ByClass("lst")).TypeText("this is awesome!!");
ie.Button(Find.ByName("btnG")).Click();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
}
}
브라우저에서 웹 사이트를 직접 실행하지 않고 거기에 많은 브라우저 자동화 도구 중 하나를 사용하여 Watin 또는 Serenium과 같은 특정 요소를 사용하는 특별한 이유가 있습니까? –
내 프로젝트는 Selenium을 사용하여. NET에서 웹 브라우저에 대한 자동화를 가능하게하는 것이지만 WatiN이가는 길 같습니다. –