Tag: browser

WebClient下载字符串与WebBrowser View源不同

我正在创建一个C#4.0应用程序来使用Web客户端下载网页内容。 WebClientfunction public static string GetDocText(string url) { string html = string.Empty; try { using (ConfigurableWebClient client = new ConfigurableWebClient()) { /* Set timeout for webclient */ client.Timeout = 600000; /* Build url */ Uri innUri = null; if (!url.StartsWith(“http://”)) url = “http://” + url; Uri.TryCreate(url, UriKind.RelativeOrAbsolute, out innUri); try { client.Headers.Add(“User-Agent”, “Mozilla/4.0 (compatible; MSIE […]

具有WPF WebBrowser控件的本地网页中的VLC ActiveX

所以我尝试在WPF WebBrowser控件下运行VLC ActiveX v.2并在本地加载它。 并且VLC ActiveX无法正常工作…… C# void MainWindow_Loaded(object sender, RoutedEventArgs e) { var file = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, “index.html”); using (StreamReader sr = new StreamReader(file)) { String url = sr.ReadToEnd(); wb.NavigateToString(url); } } HTML 请注意,如果我远程加载它工作正常! 此外,我试图像使用嵌入式资源一样使用index.html。 所以我用过 Stream docStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(“WpfApplication12.index.html”); wb.NavigateToStream(docStream); 有可能吗? WPF WebBrowser控件是否非常有限,无法使用ActiveX执行本地网页? 任何线索? PS我试图用WInForm WebBrowser控件做同样的事情 – 没有快乐…… PS#2我试过这个项目http://www.codeproject.com/Articles/3919/Using-the-WebBrowser-control-simplified和VLC ActiveX相同的HTML在那里工作正常。 但它是用C ++完成的,我根本不知道… 🙁 PS#3我刚试过MS […]

带有Specflow的DataSource属性,用于多个浏览器测试

我在C#中进行了一些web ui测试,这些测试是通过browserstack中的selenium执行的。 目前这些只是简单的单位ms测试,它们在不同的浏览器中执行。 我想将测试移植到specflow,但我真的不知道如何进行多个浏览器测试。 目前,要在多个浏览器中执行这些测试,我使用的是DataSource属性,它基本上为XML文件中的相同测试提供不同的输入 [TestMethod] [Ignore] [DeploymentItem(“JLL.Specs\\Browsers.xml”)] [DataSource(“Microsoft.VisualStudio.TestTools.DataSource.XML”, “|DataDirectory|\\Browsers.xml”, “Row”, DataAccessMethod.Sequential)] public void LoadHomePageAndFindSearchBox() { … } 问题是Specflow不支持DataSource属性。 任何的想法? 这是XML文件: Firefox 31.0 Windows 7 1280×1024 Chrome 36.0 Windows XP 1024×768 …

如何在C#中使用后台工作者中的Web浏览器对象

我有下面的代码问题。 有人可以告诉为什么它在BackgroundWorker中不起作用,我该如何解决这个问题 string address = “My URL”; webBrowser.Navigate(new Uri(address)); do { Application.DoEvents(); } while (webBrowser.ReadyState != WebBrowserReadyState.Complete);

不使用浏览器控件从字符串获取HtmlDocument

我使用WebClient获取网页的html代码(作为字符串)。 但是我想把它变成一个HtmlDocument对象,所以我可以使用这个类提供的DOMfunction。 目前我知道如何做的唯一方法是使用浏览器控件,如下所示: string pageHtml = client.DownloadString(url); browser.ScriptErrorsSuppressed = true; browser.DocumentText = pageHtml; do { Application.DoEvents(); } while (browser.ReadyState != WebBrowserReadyState.Complete); return browser.Document; 还有另一种方法吗? 我知道还有其他浏览器控件可用,但是有更简单的方法吗?

WatiN“无法转换COM对象”exception

我的监控应用程序不时会因为没有明显原因而死亡。 似乎“mshtml.HTMLDocument”资源不可用。 其他人经历过类似的事吗? 提前致谢。 错误信息: 14.04.2011 18:26:37 -> Test 1.2 (Subscriber type requests), error: Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘mshtml.HTMLDocument’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}’ failed due to the following error: No such interface supported (Exception from […]

Browser.ReadyState上的致命执行错误

可能重复: .NET“致命执行引擎错误”故障排除 我的代码抛出致命执行错误。 确切的错误是这样的: 运行时遇到了致命错误。 错误的地址位于线程0x2044处的0xed40646c处。 错误代码是0xc0000005。 此错误可能是CLR中的错误,也可能是用户代码的不安全或不可validation部分中的错误。 此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈。 据我所知,我没有使用不安全的用户代码。 导致问题的代码是这样的: WebClient client = new WebClient(); string pageHtml = client.DownloadString(url); browser.ScriptErrorsSuppressed = true; browser.DocumentText = pageHtml; do { Application.DoEvents(); } while (browser.ReadyState != WebBrowserReadyState.Complete); //CRASH OCCURS HERE 现在这里是踢球者。 此代码在循环上运行。 它经常发生这种错误。 有时它在第1000次运行。 上次是第5545次。 它似乎非常随机。 我该如何解决这个问题? 或者我如何获得更多信息来解决它?

在多个窗口中使用WPF WebBrowser控件时内存泄漏

我正在开发一个使用WPF WebBrowser控件(System.Windows.Controls.WebBrowser)的项目。 该程序的Web浏览器元素是用户可以参与的许多活动之一,并且在单独的窗口中打开。 在用户离开浏览器之后,窗口关闭,每次用户返回浏览器时都会创建一个新窗口。 我们注意到在我们的程序中出现了严重的内存泄漏/性能下降(在初始使用率达到约700mb时,从最初的200起),不断使用浏览器。 在我们自己的代码中未能找到任何资源泄漏点后,我决定确定问题是否与我们自己的WebBrowser包装器控件或WPF控件有关。 我创建了一个新的简单项目,只包含一个MainWindow和一个WebWindow。 主窗口上的一个按钮启动了一个针对gmail的浏览器(我们注意到的网站是我们检查过的少数几个问题)。 关闭此窗口后,不会释放资源(任务管理器或Process Explorer中的VM大小没有减少),并且进程处理的GDI对象数量不会减少(程序以~30开始,打开浏览器需要它到~140,关闭浏览器后~140仍然打开)。 打开另一个浏览器会导致更多句柄,并分配更多资源。 此外,通过在WebBrowser控件上专门调用Dispose()无法解决此问题。 代码很简单,如下: 主窗口: Gmail Button_Click: private void Button_Click(object sender, RoutedEventArgs e) { var win = new WebWindow(); win.Show(); win.Browser.Navigate(“http://www.gmail.com”); } 网页窗口: Close 相关守则: public WebBrowser Browser { get { return _browser; } } private void Button_Click(object sender, RoutedEventArgs e) { Close(); } protected override […]

以编程方式登录网站的技术

我正在尝试自动登录Photobucket以用于需要使用存储凭据自动下载照片的项目的API。 API生成用于登录的URL,使用Firebug,我可以查看正在发送/接收的请求和响应。 我的问题是,我如何使用HttpWebRequest和HttpWebResponse来模仿C#中浏览器中发生的事情? 是否可以在C#应用程序中使用Web浏览器组件,填充用户名和密码字段并提交登录信息?

解析HTML – 如何从标记中获取数字?

我正在开发一个与网站交互的Windows窗体应用程序。 使用WebBrowser控件我控制网站,我可以使用以下方法遍历标记: HtmlDocument webDoc1 = this.webBrowser1.Document; HtmlElementCollection aTags = webDoc1.GetElementsByTagName(“a”); 现在,我想从标签中获取特定文本,如下所示: Show Assigned 就像在这里一样,我希望在上面的标签中得到等于assignto的数字244并将其保存到变量中以供进一步使用。 我怎样才能做到这一点?