C#操作IE

操作IE主要使用两个Com Dll:

1、Microsoft Internet Controls

2、Microsoft HTML Object Library

使用Microsoft Internet Controls取得所有的已经打开的IE(以Tab计算)

SHDocVw.ShellWindows IETabs = new SHDocVw.ShellWindows();

每个一个Tab都可以操作,每个Tab对应Com Object的SHDocVw.InternetExplorer

foreach (SHDocVw.InternetExplorer ieTab in IETabs)
{

}

取得每个Tab之后,就可以通过InternetExplorer的Document取得每个页面的Dom

mshtml.HTMLDocument dom = ieTab.Document as mshtml.HTMLDocument;

取得Dom之后,基本上就已经取得了操作IE的所有权限了,可以继续使用HTML Object Library对页面进行操作

或者通过注册JavaScript,对页面进行操作:

mshtml.IHTMLScriptElement script = dom.createElement("script") as mshtml.IHTMLScriptElement; \\创建script标签
script.text = "$(\"[name=‘wd‘]\").val(‘刘德华‘);"; \\通过Jquery,对百度进行操作

mshtml.HTMLBody body = dom.body as mshtml.HTMLBody; \\取得body对象
body.appendChild((mshtml.IHTMLDOMNode)script); \\注册JavaScript

完整代码(循环所有ieTab,对百度页面操作...搜索刘德华):

            SHDocVw.ShellWindows IETabs = new SHDocVw.ShellWindows();
            foreach (SHDocVw.InternetExplorer ieTab in IETabs)
            {
                if (ieTab.LocationURL.Contains("www.baidu.com"))
                {
                    mshtml.HTMLDocument doc = ieTab.Document as mshtml.HTMLDocument;
                    mshtml.IHTMLScriptElement script = doc.createElement("script") as mshtml.IHTMLScriptElement;
                    script.text = "$(\"[name=‘wd‘]\").val(‘刘德华‘);";
                    mshtml.HTMLBody body = doc.body as mshtml.HTMLBody;
                    body.appendChild((mshtml.IHTMLDOMNode)script);
                }
            }

园里有其他更加详细的参考Blog:

c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2

C#操作IE浏览器

个人建议:

基本接入IE,使用Com,然后其他业务操作,通过注入JavaScript进行操作

时间: 2024-10-12 17:49:10

C#操作IE的相关文章

如何用一个app操作另外一个app.比如微信群控那样的

如何实现一个app.控制另外的app,比如市面上群控微信的,是用测试工具的原理?还是什么模拟点击的原理? 如何用一个app操作另外一个app.比如微信群控那样的 >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007186891/如何用一个app操作另外一个app比如微信群控那样的.html

ELK 学习笔记之 elasticsearch Mget操作

Mget操作: 查询多个文档: curl -XGET 'http://192.168.1.151:9200/_mget' -d '{"docs": [{"_index": "library","_type": "books", "_id": "1"}, {"_index": "library","_type"

条件、循环、函数定义、字符串操作练习

注意标准库的两种导入与使用方式,建议大家采用<库名>.<函数名>的方式. 对前面的代码进行优化,用for,while,if,def实现: 用循环画五角星 1 import turtle 2 3 turtle.fillcolor("red") 4 turtle.begin_fill() 5 for i in range(5): 6 turtle.forward(100) 7 turtle.right(144) 8 turtle.end_fill() 用循环画同心圆

Python 文件操作

操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = open('文件路径', '模式') 打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作. 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读: 不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,

Python操作数据库(mysql redis)

一.python操作mysql数据库: 数据库信息:(例如211.149.218.16   szz  123456) 操作mysql用pymysql模块 #操作其他数据库,就安装相应的模块 import  pymysql ip='211.149.218.16' port=3306 passwd='123456' user='root' db='szz' conn=pymysql.connect(host=ip,user=user,port=port,passwd=passwd,db=db,cha

数据库权限分配操作

1.远程登录mysqlmysql -h ip -u root -p 密码2.创建用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";例1:增加一个test1用户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能.需要在mysql的root用户下进行mysql>grant select,insert,update,delete on *.* to [email protected]&quo

Django(三) ORM 数据库操作

比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1

SQLServer数据库自增长标识列的更新修改操作

SQLServer数据库自增长标识列的更新修改操作方法在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录序号等等.自增长的标识列的引用很大程度上方便了数据库程序的开发,但是有时这个固执的字段类型也会带来一些麻烦. 一.修改标识列字段的值:(在执行insert时,将ID手动的设置成想要的值)有时,为了实现某个功能,需要修改类型为Identity自增长类型的字段的值,但由于标识的类型所限,这种操作默认是不允许的.比如,目前数据库有

对IO流的操作(文件大小,拷贝,移动,删除)

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.SequenceInputStream; class LjyFileClass { /*LjyFileClass工具类使用需知: * * 1.计算