0
我正在研究一个VB.Net类库项目,并且我有一个Web浏览器控件(在一个表单中)用于多次导航到相同的URL这个特殊的序列:Web浏览器控件 - 一个接一个地导航到URL
假设的网址是:https://www.google.com/submitForm
环路启动
- 浏览URL,
- 文档完备事件导航的URL的
- 执行DOM操作,并提交形式
- 关闭Web浏览器形式
循环结束
代码:
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
问题: 每次我尝试运行此循环时,它都会打开多个Web浏览器窗体,但只会关闭第一个窗体并将其他窗体打开。另外,它确实执行了多次导航,但实际上只进行了最后一次导航提交。
预期的行为: 我想为形式实际上经过上述过程中,通过每完成的事件,关闭窗体,然后再次启动形式,导航和关闭形式的创作。
你必须向我们展示的形式相关的代码。你给我们太少,无法重现这一点。 –
Hi @VisualVincent:我也为表单添加了相关的代码。请让我知道是否有办法实现这一目标? – Neophile
假设提交调用是表单最后要做的事情....按照me.close –