2013-05-23 2 views
1

나는 URL 목록을 크롤링하고 실제 소스 코드 (즉 원시가 아닌 생성 된 소스)를 내리기 위해 앱에서 작업 해 왔습니다. PhantomJS를 통해 Selenium.NET에서이 작업을 수행했습니다. 헤드리스 폼에서 작업을 수행하고 싶었습니다.Selenium에서 GhostDriver를 실행할 때 PhantomJS.exe를 숨기는 방법

프로세스 자체는 정상적으로 작동하지만 내 스레드 중 하나가 PhantomJS 드라이버의 인스턴스를로드 할 때마다 새로 열린 콘솔에서 PhantomJS.exe (GhostDriver)가 실행됩니다. 스레드가 콘솔 창을 시작할 때마다 가능하다는 것을 피하고 싶습니다. 콘솔 창은 컴퓨터의 포커스를 훔치고 있습니다. 이것이 가능한지 아는 사람이 있습니까?

IWebDriver driver = new PhantomJSDriver(); 
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30)); 
driver.Navigate().GoToUrl(Entry); 

///... Store HTML and do main work here ... 

driver.Quit(); 
driver.Dispose(); 

생성자에 전달 될 수있는 추가 기능 또는를로드 할 수있는 더 좋은 방법 중 하나를 통해 EXE 창을 숨길 수있는 방법이 있나요 : 나는 인스턴스를 실행하기 위해 정말 기본 조각을 사용하고 있습니다 프로세스를 통해 인스턴스. 시작 등 ..?

. NET 플랫폼에서이 문제를 다루는 공식 문서를 찾지 못했기 때문에 도움을 받으실 수 있습니다. 사전에

감사합니다!

답변

3

콘솔 창의 모양은 의도적으로 설계된 것입니다. .NET 바인딩의 개발자이자 유지 관리자는 콘솔 창을 표시하지 않으면 서 콘솔로 출력 할 수있는 프로세스를 시작하면 디버깅 작업에 좋지 않을 것이라고 강력히 믿습니다. 이것이 실제로 커다란 문제인 경우 System.Diagnostics.Process 개체를 사용하여 PhantomJS.exe를 시작하고 RemoteWebDriver 클래스를 사용하여 연결하고 제어 할 수 있습니다. 하지만 PhantomJS.exe 프로세스의 수명은 사용자가 책임을 져야하므로 자신이 직접 프로세스를 종료해야합니다 (예 : driver.Quit()을 사용하여 프로세스를 종료 할 수는 없습니다. 브라우저 별 PhantomJSDriver 클래스).

+1

짐, 이에 대한 예를 제공해 주실 수 있습니까? –

+0

이것은 현재 유효하지 않습니다. http://stackoverflow.com/a/21949015/57311을 참조하십시오. – Spongeboy

관련 문제