1、第一讲,介绍一下基本的东西如何打开一个网页(太简单,加点要求)1.打开百度,http:/ , 在百度搜索里面输入”与 autoit3 亲密接触”,偶的 blog;2.窗口我要”800*600”,隐藏工具栏, 而且大小不可更改;3.偏执一点,不喜欢”百度一下,你就知道”,那我们改一下”我的百度,我做主”4.状态栏里面显示信息”欢迎访问 与 autoit3 亲密接触 5.我不想看到整个过程,我只想看到结果,OK 没问题.首先我们打开一个浏览器,输入百度的网址 ,这里要用到_IECreate,这个函数的返回值是指向这个 ie 窗口的目标变量,参数” 0,1,1,0”,分别的意思是:不找已经存在的
2、 的 ie 窗口,显示 ie,等待网页载入完全然后返回,激活此 ie 窗口#include $oIE = _IECreate (““,0,1,1,0)接下来我们对这个窗口进行一番设置,这里要用到_IEPropertySet, 这个函数用来设置浏览器或者 DOM 元素的_IEPropertySet ($oIE, “toolbar“, 0) ;隐藏 toolbar_IEPropertySet ($oIE, “width“, 800) ;设置 ie 宽 800 像素_IEPropertySet ($oIE, “height“, 600) ;设置 ie 高 600 像素_IEPropertySet (
3、$oIE, “resizable“, 0) ;设置 ie 不可以调整大小_IEPropertySet ($oIE, “title“,“我打开的百度, 我做主“) ;设置 ie 标题, 取代原 title_IEPropertySet ($oIE, “statustext“,“欢迎访问 与 autoit3 亲密接触 ;设置状态栏设置完毕,我想在搜索框里面写入搜索内容 ,这里说明一点,当窗口显示的时候我们可以用 send()/sendx()来发送,但是这样会遇到一个常见的问题, 可能窗口不是激活状态 ,因为 ie 窗口里面的内容不是标准的空间,所以 GUICtrlSetData 失效了.不过对 i
4、e.au3 有更好的方法,下面来看:$oForm = _IEFormGetObjByName ($oIE, “f“)$oQuery1 = _IEFormElementGetObjByName ($oForm, “wd“)_IEFormElementSetValue ($oQuery1, “与 autoit3 亲密接触“)上面三句,分别是找到 name 为”f”的表单,在这个表单里面找到 name 为”wd”的表单元素,这里的 wd代表的就是搜索框,最后将 wd 的内容设置为“与 autoit3 亲密接触 “这里还有朋友要问,能不能自动点击搜索按钮呢?当然可以的 ,而且我们还不是通过简单的 se
5、nd()回车键来实现,_IEFormSubmit ($oForm,0)这句就是提交$oForm 表单, 0 代表不等待网页载入完成立即返回 .这样还不够,那我们再玩点花样,目标是先让 ie 隐藏, 设置啊,输入搜索串都是在隐藏状态下完成,显示出来的时候什么都完成了,首先我们让 ie 打开的时候就是隐藏状态,$oIE = _IECreate (““,0,0,1,0)然后在适当的时候,我们让她显示出来 ,这里我们用到_IEAction(),这个函数模拟了我们对浏览器的大部分操作,如刷新,后退,退出等等,这里是让 ie 显示的, 当然也有隐藏的功能._IEAction ($oIE, “visible
6、“)总结一下,这里我们用到了几个函数 ;_IEPropertySet;_IECreate;_IEAction 这些都是和浏览器属性相关的,有着众多的参数可以来利用,基本上可以满足对浏览器的操作 .这里大家可能要提出一些疑问 ,在输入百度搜索内容的时候提到的“f“ “wd“,是从哪里来的?这个就留在下一讲,将详细的讲述一下如何填写表单 .本次的完全代码:#include $oIE = _IECreate (““,0,0,1,0);打开一个 ie,输入百度网址_IEPropertySet ($oIE, “toolbar“, 0)_IEPropertySet ($oIE, “width“, 800)
7、_IEPropertySet ($oIE, “height“, 600)_IEPropertySet ($oIE, “resizable“, 0)_IEPropertySet ($oIE, “title“,“我打开的百度,我做 主“)_IEPropertySet ($oIE, “statustext“,“欢迎访问 与 autoit3 亲密接触 = _IEFormGetObjByName ($oIE, “f“)$oQuery1 = _IEFormElementGetObjByName ($oForm, “wd“)_IEFormElementSetValue ($oQuery1, “与 auto
8、it3 亲密接触“)_IEFormSubmit ($oForm,1)_IEAction ($oIE, “visible“)Sleep(5000)MsgBox(0,“提醒“,“ 确定退出 IE“)_IEAction ($oIE, “quit“)第二讲,我们开始讨论如何填写表单第一步,先简单说一下 HTML 表单(Form).HTML 表单 (Form)是 HTML 的一个重要部分,主要用于采集和提交用户输入的信息。HTML 表单 (Form)常用控件有:input type=“text“ 单行文本输入框,可以用来输入用户名input type=“password“ 密码输入框(输入的文字用*表示
9、) input type=“submit“ 将表单(Form)里的信息提交给表单里 action 所指向的文件,一般我们从网页上看到的就是确定/发表等等input type=“checkbox“ 复选框 input type=“radio“ 单选框 select 下拉框 textArea 多行文本输入框第二步,我们如何找到一个网页的表单和表单内的控件 .下面我们结合 来讲解如何自动填写这个就是登录时候我们要操作的几个部分:分类如下1,用户名 2,密 码 3,版 本 默 认/极速 3.0 /简 约 4,记住用户名/增强安全性 5,登录邮箱/登录网盘这个五部分就是 163mail 里面的表单控件
10、, 这里我们先要看一下下面两个函数_IEFormGetCollection 返回代表文档内表单的目标变量的集合, 同时EXTENDED 记录了表单的数量_IEFormElementGetCollection 返回代表指定表单内所有控件的目标变量的集合,同时EXTENDED 记录了该表单内控件的数量好的,知道了上面两个函数的简单描述 ,我们可以写出:#include $oIE = _IECreate (“http:/“)$oForms = _IEFormGetCollection ($oIE)MsgBox(0, “表单信息“, “这个页面上共有“ & extended & “个表单“) 这里还要
11、提到一个关键字“For.In.Next “这个关键字 thesnow 没有汉化,我就罗嗦几句,For In statements.Next是一个变量 ,不必事先声明是一个数组或者变量合集(至少包含一个元素)作用是列举的所有元素.为什么要提到这个呢?因为_IEFormGetCollection ($oIE)返回的是个合集,$oQuerys = _IEFormElementGetCollection ($oForms)这样是错误的,而正确的方法是:For $Form In $oFormsMsgBox(0, “表单名称“, $oForm.name)Next这里的$Form 是随意定义的变量,可以是任
12、意的变量, 对于表单内的控件也可以同理得到寻找方法,完整的查看表单的方法就出来了,#include $oIE = _IECreate (“http:/“)$oForms = _IEFormGetCollection ($oIE)MsgBox(0, “表单信息“, “这个页面上共有“ & extended & “个表单“) For $Form In $oFormsMsgBox(0, “表单名称“, $Form.name)$oQuerys = _IEFormElementGetCollection ($Form)For $Query In $oQuerysMsgBox(0, “表单控件信息“, “
13、名称:“&$Query.name & “ 类型:“&$Query.type)NextNext 这里只是找到了这些表单/控件,有时还是难分辨具体对于网页上是哪部分,有 HTML 基础的朋友可以看网页的源文件,核对,无基础的朋友建议借助 Dreamweaver 来看,不是很难.第三步,我们来让 autoit3 填写这个表单,先说一下思路,因为我们已经可以通过上面的方法找到相关的资料 ,可以得到如下信息:表单:一个 名称是 login1631,用户名 : username 类型是 text2,密 码 :passward 类型是 passward3,版 本 默 认/极速 3.0 /简 约 : selT
14、ype 类型是 select-one4,记住用户名/增强安全性 : remuser 类型是 checkbox / secure 类型是 checkbox 5,登录邮箱/登录网盘 : 登录邮箱 类型是 submit / 登录网盘 类型是 submit下面我们用到的几个函数_IEFormGetObjByName 返回一个表单的变量,这个变量指向指定名称的表单_IEFormElementGetObjByName 返回一个控件的变量,这个变量指向指定表单和名称的控件_IEFormElementSetValue 设定表单控件的值接下来我们先试一下,将邮箱的用户名写上去 :#include $oIE =
15、_IECreate (“http:/“)$oForm = _IEFormGetObjByName ($oIE, “login163“)$oQuery = _IEFormElementGetObjByName ($oForm, “username“)_IEFormElementSetValue ($oQuery, “AutoIt IE.au3“)同样的方法,写入密码:$oQuery = _IEFormElementGetObjByName ($oForm, “password“)_IEFormElementSetValue ($oQuery, “AutoIt IE.au3“)下面是“版本“ 的选
16、择了, 这要用到下面这个函数:_IEFormElementOptionSelect 设置 “Select Option“类的表单控件值,具体见帮助.$oQuery = _IEFormElementGetObjByName ($oForm, “selType“)_IEFormElementOptionSelect ($oQuery , 1, 1, “byIndex“)对应“记住用户名/增强安全性“这两个 checkbox 我们取消 check 状态,需要下面的函数:_IEFormElementCheckBoxSelect 可以设置“checkbox“类的表单控件值,具体见帮助_IEFormEle
17、mentCheckboxSelect ($oForm, 0, “, 0, “byIndex“)_IEFormElementCheckboxSelect ($oForm, 1, “, 0, “byIndex“) 最后我们还剩下“登录邮箱/登录网盘“这两个选项了,这里上一章节用来提交表单的函数_IEFormSubmit 使用不了, 为什么 ?“there is often custom JavaScript tied to an onClick event for its Submit button“帮助里面的.所以我们要用到_IEAction()也是上一章节提到的, 我们通过名称找到对应这个控件
18、的变量,然后模拟一个 click 在这个变量上,方法如下:$oQuery = _IEFormElementGetObjByName ($oForm, “登录邮箱“)_IEAction($oQuery ,“click“)同样登录网盘就是下面的方法:$oQuery = _IEFormElementGetObjByName ($oForm, “登录网盘“)_IEAction($oQuery ,“click“)终于写完了,我想综合一/二两讲,添加一些 GUI 方面的东西,大家可以写出一个不错的 163 邮件登录的工具,甚至做出一个多邮箱登录软件总结:这一讲包括的函数:IEFormElementChec
19、kboxSelect _IEFormGetObjByName _IEFormElementGetCollection _IEFormElementGetObjByName_IEFormElementOptionSelect_IEFormElementSetValue下面这两个是类似的函数,大家看看帮助就明白了 ._IEFormElementGetValue _IEFormElementRadioSelect本次代码:#include $oIE = _IECreate (“http:/“,0,0,1,0)_IEPropertySet ($oIE, “toolbar“, 0)_IEProperty
20、Set ($oIE, “width“, 600)_IEPropertySet ($oIE, “height“, 600)_IEPropertySet ($oIE, “resizable“, 0)$oForm = _IEFormGetObjByName ($oIE, “login163“)$oQuery = _IEFormElementGetObjByName ($oForm, “username“)_IEFormElementSetValue ($oQuery, “AutoIt IE.au3“)$oQuery = _IEFormElementGetObjByName ($oForm, “pas
21、sword“)_IEFormElementSetValue ($oQuery, “AutoIt IE.au3“)$oQuery = _IEFormElementGetObjByName ($oForm, “selType“)_IEFormElementOptionSelect ($oQuery , 1, 1, “byIndex“)_IEFormElementCheckboxSelect ($oForm, 0, “, 0, “byIndex“)_IEFormElementCheckboxSelect ($oForm, 1, “, 0, “byIndex“) $oQuery = _IEFormElementGetObjByName ($oForm, “登录邮箱“)_IEAction($oQuery ,“click“)sleep(2000)_IEAction ($oIE, “visible“)