gpt4 book ai didi

c# - .NET C# : WebBrowser control Navigate() does not load targeted URL

转载 作者:可可西里 更新时间:2023-11-01 07:44:51 25 4
gpt4 key购买 nike

我正在尝试通过 WebBrowser 控件以编程方式加载网页,目的是测试页面及其 JavaScript 函数。基本上,我想将通过此控件运行的 HTML 和 JavaScript 与已知输出进行比较,以确定是否存在问题。

但是,我在简单地创建和导航 WebBrowser 控件时遇到了麻烦。下面的代码旨在将 HtmlDocument 加载到 WebBrowser.Document 属性中:

WebBrowser wb = new WebBrowser();
wb.AllowNavigation = true;

wb.Navigate("http://www.google.com/");

在 Navigate() 运行后通过 Intellisense 检查 Web 浏览器的状态时,WebBrowser.ReadyState 为“未初始化”,WebBrowser.Document = null,并且它总体上看起来完全不受我调用的影响。

根据上下文说明,我在 Windows 窗体对象之外运行此控件:我不需要加载窗口或实际查看页面。需求指示需要简单地执行页面的 JavaScript 并检查生成的 HTML。

非常感谢任何建议,谢谢!

最佳答案

您应该处理 WebBrowser.DocumentComplete 事件,一旦引发该事件,您将拥有文档等。

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);


private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = sender as WebBrowser;
// wb.Document is not null at this point
}

这是一个完整的示例,我在 Windows 窗体应用程序中快速完成并进行了测试。

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
WebBrowser wb = new WebBrowser();
wb.AllowNavigation = true;

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

wb.Navigate("http://www.google.com");

}

private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = sender as WebBrowser;
// wb.Document is not null at this point
}
}

编辑:这是一个简单的代码版本,它从控制台应用程序运行一个窗口。您当然可以更进一步,将事件公开给控制台代码等。

using System;
using System.Windows;
using System.Windows.Forms;

namespace ConsoleApplication1
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Application.Run(new BrowserWindow());

Console.ReadKey();
}
}

class BrowserWindow : Form
{
public BrowserWindow()
{
ShowInTaskbar = false;
WindowState = FormWindowState.Minimized;
Load += new EventHandler(Window_Load);
}

void Window_Load(object sender, EventArgs e)
{
WebBrowser wb = new WebBrowser();
wb.AllowNavigation = true;
wb.DocumentCompleted += wb_DocumentCompleted;
wb.Navigate("http://www.bing.com");
}

void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Console.WriteLine("We have Bing");
}
}
}

关于c# - .NET C# : WebBrowser control Navigate() does not load targeted URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2747379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com