보안 인트라넷 사이트에서 여러 페이지를 인쇄해야하는 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을 통해이 사이트에 로그인하는 또 다른 방법이 있거나 더 많은 정보를 제공해야하는 경우 알려주십시오.
'.Navigate'는 페이지로드가 완료되기 전에 *를 반환하므로 DOM이 준비되지 않았기 때문에'.Document'에 액세스 할 수 없습니다. 만나다; http://stackoverflow.com/questions/3275515/how-to-wait-until-webbrowser-is-completely-loaded-in-vb-net –
WebPrint에서 루프를 보았을 때 그 것이 었는지 궁금했습니다. DOM이로드 될 때까지 기다리는 루프를 추가했습니다. 이제 매력처럼 작동합니다. 정말 고마워요. –
@AlexK. 받아 들일 수 있도록 답을 남기고 싶습니까? –