第一讲,介绍一下基本的东西
如何打开一个网页,太简单,加点要求
首先我们打开一个浏览器,输入百度的网址,这里要用到_IECreate,这个函数的返回值是指向这个ie窗口的目标变量,参数” 0,1,1,0”,分别的意思是:不找已经存在的www.baidu.com的ie窗口,显示ie,等待网页载入完全然后返回,激活此ie窗口
#include
$oIE = _IECreate (“www.baidu.com”,0,1,1,0)
上面三句,分别是找到name为”f”的表单,在这个表单里面找到name为”wd”的表单元素,这里的wd代表的就是搜索框,最后将wd的内容设置为”与 autoit3 亲密接触”
#include
$oIE = _IECreate (“www.baidu.com”,0,0,1,0);打开一个ie,输入百度网址
_IEPropertySet ($oIE, “toolbar”, 0)
_IEPropertySet ($oIE, “width”, 800)
_IEPropertySet ($oIE, “height”, 600)
_IEPropertySet ($oIE, “resizable”, 0)
_IEPropertySet ($oIE, “title”,”我打开的百度,我做 主”)
_IEPropertySet ($oIE, “statustext”,”欢迎访问 与 autoit3 亲密接触 hi.baidu.com/iokey”)
$oForm = _IEFormGetObjByName ($oIE, “f”)
$oQuery1 = _IEFormElementGetObjByName ($oForm, “wd”)
_IEFormElementSetValue ($oQuery1, “与 autoit3 亲密接触”)
_IEFormSubmit ($oForm,1)
_IEAction ($oIE, “visible”)
Sleep(5000)
MsgBox(0,”提醒”,”确定退出IE”)
_IEAction ($oIE, “quit”)
第二讲,我们开始讨论如何填写表单
第一步,先简单说一下HTML表单(Form).
HTML表单(Form)是HTML的一个重要部分,主要用于采集和提交用户输入的信息。
第二步,我们如何找到一个网页的表单和表单内的控件.
下面我们结合mail.163.com来讲解如何自动填写
这个就是登录时候我们要操作的几个部分:分类如下
1,用户名
2,密 码
3,版 本 默 认/极速 3.0 /简 约
4,记住用户名/增强安全性
5,登录邮箱/登录网盘
$oIE = _IECreate (“http://mail.163.com”)
$oForms = _IEFormGetCollection ($oIE)
MsgBox(0, “表单信息”, “这个页面上共有” & @extended & “个表单”)
For $Form In $oForms
MsgBox(0, “表单名称”, $Form.name)
$oQuerys = _IEFormElementGetCollection ($Form)
For $Query In $oQuerys
MsgBox(0, “表单控件信息”, “名称:”&$Query.name & ” 类型:”&$Query.type)
Next
Next
这里只是找到了这些表单/控件,有时还是难分辨具体对于网页上是哪部分,有HTML基础的朋友可以看网页的源文件,核对,无基础的朋友建议借助Dreamweaver来看,不是很难.
第三步,我们来让autoit3填写这个表单,
先说一下思路,因为我们已经可以通过上面的方法找到相关的资料,可以得到如下信息:
表单:一个 名称是login163
1,用户名 : username 类型是text
2,密 码 :passward 类型是passward
3,版 本: 默 认/极速 3.0 /简 约 : selType 类型是 select-one
4,记住用户名/增强安全性 : remuser 类型是 checkbox / secure 类型是 checkbox
5,登录邮箱/登录网盘 : 登录邮箱 类型是 submit / 登录网盘 类型是 submit
#include
$oIE = _IECreate (“http://mail.163.com”,0,0,1,0)
_IEPropertySet ($oIE, “toolbar”, 0)
_IEPropertySet ($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, “password”)
_IEFormElementSetValue ($oQuery, “AutoIt IE.au3”)
$oQuery = _IEFormElementGetObjByName ($oForm, “selType”)
_IEFormElementOptionSelect ($oQuery , 1, 1, “byIndex”)
第三讲 介绍一下点击链接相关的函数
1,关于图片的,因为网友问了,所以这讲里面介绍一下
_IEImgClick() 模仿用户对图片的点击动作,可以通过图片描述,名称,链接的字符串或者完全链接地址,实际应用中可能不大常用.
_IEImgGetCollection () 返回文档内所有图片的集合
我们这里举个例子,通过上面两个函数做一个简单的显示图片工具:
一个简单的例子大家如果感兴趣可以可以考虑做个批量下载的.
_IEFormImageClick()模拟在此类()控件上点击.
#include
$oIE = _IECreate (“http://www.pcpop.com/pp/133556_557953.html”,0,0,1,0)
$oImgs = _IEImgGetCollection ($oIE)
;~ $iNumImg = @extended
;~ MsgBox(0, “Img Info”, “There are ” & $iNumImg & ” images on the page”)
For $oImg In $oImgs
If StringInStr($oImg.src,”www.pcpop.com/pp”) = 0 And StringInStr($oImg.src,”120×120″) = 0 Then
;~ _IECreate($oImg.src,0,1,1,0)
$sInfo = “Src: ” & $oImg.src & @CR
$sInfo &= “FileName: ” & $oImg.nameProp & @CR
$sInfo &= “Height: ” & $oImg.height
$sInfo &= ” Width: ” & $oImg.width
$sInfo &= ” Border: ” & $oImg.border & @CR
$sInfo &= “存储位置: ” & @DesktopDir
InetGet($oImg.src,@DesktopDir&”girl.jpg”,0,1)
MsgBox(0, “美女图片信息”,$sInfo,8)
EndIf
Next
_IEAction($oIE,”quit”)
2,关于链接的论坛也有朋友问过,正好发现一个问题,是在使用过程中发现的,
_IELinkClickByText () 在A版中会出错退出,只能在U版本中使用,这个函数使用方便但是有局限性.
_IELinkClickByIndex () 这个函数实际使用中,如果搭配简单的例子可以直接写出相应的参数,而如果在较为复杂的网页中为了保证正确性最好搭配下面那个函数,
_IELinkGetCollection () 来查找需要的链接.
列举官方帮助例子,基础例子.
#include
$oIE = _IE_Example (“basic”)
$oLinks = _IELinkGetCollection ($oIE)
$iNumLinks = @extended
MsgBox(0, “Link Info”, $iNumLinks & ” links found”)
For $oLink In $oLinks
MsgBox(0, “Link Info”, $oLink.href)
Next
ie.au3在网页中的应用,很大一部分是在针对ie的表单(form)进行操作,ie.au3也提供了相应的函数供我们使用,但是对表单(form)之外的控件或者一些比较特殊无法用和form相关的函数来处理的情况,我们应该怎么做?
本讲就是介绍和讲解解决上面问题的函数,主要有下面几个函数:
———————————————————————————————————————–
_IEGetObjById 返回一个目标变量,对应指定的id or name
_IEGetObjByName 返回一个目标变量,对应指定的id or name
从帮助里面看 _IEGetObjByName 比 _IEGetObjById多了一个参数,这个参数也是在ie.au3里面经常提到的$i_index,
把所有同id or name 的列一个索引(0,1,2,3…),$i_index表示索引的第几个,以便于我们指定特定的id or name,
函数比较简单 就说明一下官方的例子
; 下面的例子将”line1″内的”innertext”显示在控制台(编辑器的output F8显示隐藏)
; *
#include
$oIE = _IE_Example (“basic”)
$oDiv = _IEGetObjById ($oIE, “line1”) ;返回一个id为”line1″的div的指向变量,有了这个变量我们可以用_IEPropertyGet/_IEPropertySet对其进行操作
ConsoleWrite(_IEPropertyGet($oDiv, “innertext”) & @CR)
;~ MsgBox(0,””,_IEPropertyGet($oDiv, “innertext”) & @CR) 个人习惯这种用法.
; *
; 下面的方法等同于 $oForm = _IEFormGetObjByName($oIE, “ExampleForm”)
; *
#include
$oIE = _IE_Example (“form”)
$oForm = _IEGetObjByName
_IETableGetCollection 返回指定文档内所有/指定的表格的目标变量,指定的表单是以索引顺序来指定的(0,1,2,3…)
_IETableWriteToArray 读出表格内的数据,写入到一个数组,
这两个可以收集网页内的数据,对于数据型的网页,可以通过这两个函数很方便的获取数据.
例子的目的是读取网页内所以表格数据,并且显示出来.
#include
$oIE = _IECreate (“http://www.autoit.net.cn/search.php?srchfrom=45000&searchsubmit=yes”)
$oInputs = _IETableGetCollection ($oIE) ;返回指网页内所有表格的目标变量
$iNumTables = @extended ;文档内所以表格的数量
MsgBox(0, “Table Info”, “There are ” & $iNumTables & ” tables on the page”)
$i = 0
For $oInput In $oInputs
$table = _IETableGetCollection ($oIE,$i)
$oInput = _IETableWriteToArray ($table) ;读取指定表格内的数据,写入到数组
_ArrayDisplay($oInput, “第”&$i+1&”个表单内容”,0,1) ;显示数组
$i += 1
Next
_IETagNameAllGetCollection 返回指定文档内所有/指定的标记名(Tagname)的目标变量,指定的标记名是以索引顺序来指定的(0,1,2,3…)
_IETagNameGetCollection 返回指定文档内所有特定标记名的目标变量集.
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226564.html原文链接:https://javaforall.net
