VB.Net 클래스 라이브러리 프로젝트에서 작업 중이며 같은 URL을 여러 번 탐색하는 데 사용하는 웹 브라우저 컨트롤 (양식 내 있음)이 있습니다. 이 특별한 순서 :웹 브라우저 제어 - 다른 URL 다음 하나로 이동합니다.
이의이 URL을 가정 해 보자는 다음과 같습니다 https://www.google.com/submitForm
루프 시작하십시오
- 이동
- 문서 완료 이벤트를 URL로 탐색 URL의
- 양식 DOM 조작을 수행하고 제출
- 닫기 웹 브라우저 형태
루프 끝
코드 :
Public Sub customNavigation()
For j = 0 To listOfUrls.Count - 1
testWebBrowserForm = New WebBrowserForm(Me)
Dim browserSize As System.Drawing.Size = New Size(100, 100)
testWebBrowserForm.Size = browserSize
testWebBrowserForm.FormBorderStyle = FormBorderStyle.FixedSingle
testWebBrowserForm.Show()
testWebBrowserForm.SendToBack()
testWebBrowserForm.Location = New Point(100, 100)
testWebBrowserForm.Navigate(New Uri("https://google.com/submitForm"))
Next
End Sub
// Once the document has completely loaded
Public Sub documentLoadComplete()
Dim submitButton As HtmlElement = Nothing, formEl As HtmlElement = Nothing
Dim attachmentInputElements As Windows.Forms.HtmlElementCollection = testWebBrowserForm.webBrowser.Document.GetElementsByTagName("input")
Dim formElements As Windows.Forms.HtmlElementCollection = testWebBrowserForm.webBrowser.Document.Forms
Dim form As Windows.Forms.HtmlElement = testWebBrowserForm.webBrowser.Document.Forms(0)
For y = 0 To formElements.Count - 1
Dim formelement As HtmlElement = formElements(y)
If formelement.GetAttribute("name").Equals("theForm") Then
formEl = formelement
End If
Next
For i = 0 To attachmentInputElements.Count - 1
Dim inputElement As HtmlElement = attachmentInputElements(i)
If inputElement.GetAttribute("type").Equals("submit") Then
submitButton = inputElement
End If
Next
testWebBrowserForm.webBrowser.Document.InvokeScript("doSomething")
submitButton.InvokeMember("click")
testWebBrowserForm.Close()
End Sub
문제 : 이 루프를 실행하려고 할 때마다 여러 웹 브라우저 양식이 열리지 만 첫 번째 창만 닫히고 다른 창은 계속 열립니다. 또한 여러 번 탐색을 수행하지만 실제로 마지막 탐색 제출 만 수행합니다.
예상되는 동작 : 양식이 실제로 각 완료 이벤트를 통해 이동, 위에서 언급 한 절차를 통해 양식을 닫은 후 다시 형태, 탐색 및 가까운 형태의 생성을 시작하는 내가 좋아하는 것입니다.
당신은뿐만 아니라 우리에게 양식에 대한 관련 코드를 표시해야합니다. 이걸 재현 할 수있을만큼 우리에게 너무 적은 것을주었습니다. –
안녕하세요 @VisualVincent : 양식 관련 코드도 추가했습니다. 이것을 달성 할 수있는 방법이 있다면 알려주시겠습니까? – Neophile
submit 호출이 폼이해야 할 마지막 일이라고 가정합니다 .... me.close를 따르십시오. –