【发布时间】:2017-07-07 00:19:38
【问题描述】:
我正在开发一个 VB.Net 类库项目,并且我有一个 Web 浏览器控件(在一个表单中),我用它来以这个特定的顺序多次导航到同一个 URL:
假设 URL 是:https://www.google.com/submitForm
循环开始
- 导航到网址
- 导航 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
问题: 每次我尝试运行此循环时,它都会打开多个 Web 浏览器表单,但只关闭第一个表单并保持其他表单打开。另外,它确实执行了多次导航,但实际上只执行了最后一次导航提交。
预期行为: 我想让表单真正经历上面提到的过程,完成每个完成的事件,关闭表单,然后再次开始创建表单、导航和关闭表单。
【问题讨论】:
-
您还必须向我们展示表单的相关代码。你给我们的太少了,无法重现。
-
嗨@VisualVincent:我也为表单添加了相关代码。请让我知道是否有办法实现这一目标?
-
假设提交调用是表单应该做的最后一件事....跟着我.close
-
这很好,但这只是关闭最后一次调用的导航调用,并且不会随着循环的进行一个接一个地执行。
-
下载完成事件是否不在 WebBrowserForm 中?
标签: javascript c# vb.net forms webbrowser-control