处理IE填写表格c#
Handle IE To filling a form c#
我想浏览一个网站,登录并通过我的应用程序填写表格,而不会看到用户任何东西,最后将其显示给用户进行提交。
以前我使用网络浏览器控件。它通常工作,但有时,在用户提交表单后,网站上会出现一些错误。但在IE中,这些错误不是用相同的数据引起的。
有没有什么方法可以直接在IE中用我的数据导航和填写表格,然后向用户显示?(这个站点有太多客户端控件,我必须等待它们对我的数据做出响应(例如,在选择状态后加载城市)
您可以从C#应用程序中自动化Internet Explorer实例。首先,使用TlbImp.exe ieframe.dll
创建互操作程序集SHDocVw.dll
,并将其添加为对项目的引用。然后使用以下代码创建Internet Explorer的进程外实例:
var ie = (SHDocVw.WebBrowser)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.Application"));
ie.Visible = true;
ie.Navigate("http://www.example.com");
以与使用WebBrowser
控件类似的方式使用它。
也就是说,我相信您仍然可以使用托管WebBrowser
来实现您想要实现的目标,只需实现功能控制,使其行为与IE相同(或尽可能接近)。
[EDITED]然而,这个无辜的例子可能有一个隐藏的陷阱。因为您在这里自动化了进程外的COM对象,所以它的事件(如果您处理任何事件)可能会到达一个线程,而不是您的主UI线程。通常,您需要使用Control.Invoke或SynchronizationContext.Post/Send将它们封送回主线程(取决于您是异步处理还是同步处理)。以下是处理DocumentComplete和处理线程的示例:
using System;
using System.Diagnostics;
using System.Threading;
using System.Windows.Forms;
namespace WinformsIE
{
public partial class Form1 : Form
{
public Form1()
{
SetBrowserFeatureControl();
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs ev)
{
var ie = (SHDocVw.InternetExplorer)Activator.CreateInstance(Type.GetTypeFromProgID("InternetExplorer.Application"));
ie.Visible = true;
Debug.Print("Main thread: {0}", Thread.CurrentThread.ManagedThreadId);
ie.DocumentComplete += (object browser, ref object URL) =>
{
string url = URL.ToString();
Debug.Print("Event thread: {0}", Thread.CurrentThread.ManagedThreadId);
this.Invoke(new Action(() =>
{
Debug.Print("Action thread: {0}", Thread.CurrentThread.ManagedThreadId);
var message = String.Format("Page loaded: {0}", url);
MessageBox.Show(message);
}));
};
ie.Navigate("http://www.example.com");
}
}
}
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 我应该使用Ng提交还是点击表格
- CSS表格:从列平移到整个表格宽度
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 将HTML表格导出到excel时,无法将数据加载到excel文件中
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 滚动和表格
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 设置倒计时计时器,IE出现问题
- 仅在IE中,javascript中的时区名称不正确
- Google电子表格getValue([cell containing ])不返回制表符
- 将HTML表格的内容导出到Excel表格中,以便IE、Mozilla、Firefox等浏览器支持
- 处理IE填写表格c#
- 在IE的表格中添加tr
- 当表格在IE中获得焦点时,表格滚动条会跳起来
- 将 Hammer.js“hold”事件附加到 IE 10 下的表格行中断文本选择
- IE 8上的Ckeditor-选择表格单元格