【问题标题】:VB.NET 2008 - Input to data to website controls and download resultsVB.NET 2008 - 向网站控件输入数据并下载结果
【发布时间】:2013-08-29 07:58:30
【问题描述】:

这是我在这个网站上的第一个问题,如果我遗漏了任何重要的细节,请告诉我,并提前致谢。

我被要求访问一个网站并从用户输入的表单中下载结果。该网站要求输入用户名/密码,一旦被接受,就会出现几个用于生成多个答案的问题。

由于我不熟悉这个领域,所以我设置了一个简单的窗口表单来修补网站并尝试获取内容。我使用了一个网络浏览器控件和一个按钮来使用它来查看相关网站。

当我尝试通过控件查看网站时,我只是收到脚本错误,并且没有加载任何内容。我猜我的表单上缺少某些 IE 可以无错误处理的插件。无论如何我可以确定这些是什么并弄清楚下一步该怎么做?我被难住了。

脚本错误是: “预期的标识符、字符串或数字”和 "属性 'setsection' 的值为 null 或未定义"

两者都询问我是否要继续在页面上运行脚本。但它在 IE 中有效,我不明白为什么我的控制如此不同。它实际上请求了一个可以正常工作的用户名和密码,这是错误的下一步。

如果需要,我可以提供截屏或网站源 html 的摘录。

谢谢,

我的代码是:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'WebBrowser1.ScriptErrorsSuppressed = True
    WebBrowser1.Navigate("http://website.com")
    'WebBrowser1.Navigate("http://www.google.com")
End Sub

【问题讨论】:

  • 看看this是否有帮助。
  • 这看起来确实很有用,但我在从 C#(我以前从未使用过)转换为 VB 时遇到了麻烦。哪里有VB版本?
  • 我还没有偶然发现它的 VB 版本,但请尝试在 StackOverflow 中搜索 FEATURE_BROWSER_EMULATION
  • 这让我走上了正确的道路。我会为未来的谷歌人提供一个答案,但感谢你的帮助!
  • 不用担心,很高兴它有帮助:) 这是一个重复的问题。

标签: vb.net webbrowser-control


【解决方案1】:

感谢 Noseratio,我已经设法解决了这个问题。

尽管我得到的错误似乎与某些 XML/Java/任何功能出现问题有关,但实际上是因为我的 webbrowser 控件使用的是 ie 7.0

我强迫它使用ie 9,现在一切都很好。所以,使用我上面的例子,我基本上做了这样的事情:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'WebBrowser1.ScriptErrorsSuppressed = True
    BrowserUpdate()
    WebBrowser1.Navigate("http://website.com")
    'WebBrowser1.Navigate("http://www.google.com")
End Sub

Sub BrowserUpdate()
        Try

            Dim IEVAlue As String = 9000 ' can be: 9999 , 9000, 8888, 8000, 7000    
            Dim targetApplication As String = Process.GetCurrentProcess.ToString & ".exe"
            Dim localMachine As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.LocalMachine
            Dim parentKeyLocation As String = "SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl"
            Dim keyName As String = "FEATURE_BROWSER_EMULATION"
            Dim subKey As Microsoft.Win32.RegistryKey = localMachine.CreateSubKey(parentKeyLocation & "\" & keyName)
            subKey.SetValue(targetApplication, IEVAlue, Microsoft.Win32.RegistryValueKind.DWord)

        Catch ex As Exception
            'Blah blah here
        End Try

    End Sub

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多