2011-10-21 2 views
1

보안 인트라넷 사이트에서 여러 페이지를 인쇄해야하는 VB.Net 응용 프로그램이 있습니다. 응용 프로그램이 만들어졌으며 보안되지 않은 사이트에서 작업하고 있었지만 지금은 인쇄에 필요한 웹 페이지에 액세스하기 전에 로그인해야합니다.문서 개체를 사용하여 웹 페이지에서 작업하기

나는 다음 내 새로운 서브를 사용할 때 "개체의 인스턴스로 설정되지 않았습니다 개체 참조"오류를 얻을 :

Private Sub SiteLogin() 
    WebBrowser1.Navigate("http://url/login/") 

    WebBrowser1.Document.GetElementById("user").SetAttribute("value", "username") 
    WebBrowser1.Document.GetElementById("password").SetAttribute("value", "mypassword") 

    WebBrowser1.Document.GetElementById("submit").InvokeMember("click") 
End Sub 

내가 this VB tutorial에서 코드를 가지고,하지만 뭔가 빠진 것 같다 내가 WebBrowser.Document 객체를 참조하는 방법.

Private Sub WebPrint() 
    WebBrowser1.Navigate(strUrl) 
    WebDocLoaded = False 
    'lblMessage.Text = "Waiting for report page to load" 
    Do Until WebDocLoaded 
     System.Windows.Forms.Application.DoEvents() 
    Loop 
End Sub 

IE에서이 하위 인쇄 주어진 페이지 : 나는이 그러나 원래 프로그램에서 작업을 수행하는 다음과 같은 하위, 그래서 나는이 문제에 대해 잘 모르는 전에 VB.Net을 사용한 적이 그래서 내가 어떻게 SubLog에 대한 별도의 객체를 선언해야하는지 모르겠다. 나는 로그인 Sub에 대해 동일한 WebBrowser1 객체를 사용할 수 있다고 생각했다. 그러나이 두 함수는 WebBrowser1 객체가 정의 된 후에 호출됩니다.

설정 URL에 간단한 로그인 양식을 제출할 수 있어야하며이 정보는 모두 하드 코드되어야합니다 (위치 또는 로그인 정보를 설정하거나 옵션을 설정할 필요가 없습니다). VB.Net을 통해이 사이트에 로그인하는 또 다른 방법이 있거나 더 많은 정보를 제공해야하는 경우 알려주십시오.

+1

'.Navigate'는 페이지로드가 완료되기 전에 *를 반환하므로 DOM이 준비되지 않았기 때문에'.Document'에 액세스 할 수 없습니다. 만나다; http://stackoverflow.com/questions/3275515/how-to-wait-until-webbrowser-is-completely-loaded-in-vb-net –

+0

WebPrint에서 루프를 보았을 때 그 것이 었는지 궁금했습니다. DOM이로드 될 때까지 기다리는 루프를 추가했습니다. 이제 매력처럼 작동합니다. 정말 고마워요. –

+0

@AlexK. 받아 들일 수 있도록 답을 남기고 싶습니까? –

답변

관련 문제