kood481748 发表于 2012-5-2 19:39:25

如何操作网页框架中的表单?

用AU3打开一个网页,这个网页中包含有框架,框架中又含有表单,
我想要操作这个表单,却操作不了,请看代码:
#include <IE.au3>

$oIE = _IECreate(@ScriptDir & "\kuanjia1.htm",0,1,1)

$oFrames = _IEFrameGetCollection($oIE)
$iNumFrames = @extended
MsgBox(32,"提示","框架数量为:"& $iNumFrames)

$oiframe =_IEFrameGetCollection($oIE, 0)          ;返回网页中第一个框架的对象变量
$oForm = _IEFormGetCollection ($oiframe, 0)       ;返回框架中第一个表单的对象变量
$input0 = _IEFormElementGetCollection ($oForm, 0) ;返回表单中第一个表单元素的对象变量
_IEFormElementSetValue($input0, "ddd")            ;自动填写表单

MsgBox(32,"提示", "操作完成!!!")

下面是网页代码(kuanjia1.htm):

<html>
<head>
<title>框架试验</title>
</head>

<body bgcolor="#DAA520">
<center>下面是框架</center><br>
<center>
<iframe src="http://www.baidu.com/" width="800" marginwidth="0" height="500" marginheight="0" align="middle" scrolling="no" frameborder="0"></iframe>
</center>
</body>
</html>

以上代码我用AU3 3361的版本运行,还会弹出一个错误提示,用au3 3390的版本运行就什么错误也不出了,表单还是操作不了
请论坛中的各位老师帮忙看看我的代码是否有问题

shqf 发表于 2012-5-3 15:20:48

试了一下,代码都是可以的。只是对框架为百度网页的有点儿问题“$oiframe =_IEFrameGetCollection($oIE, 0) ” 语句获取不到对象。不知是百度网页的特殊性,还是语句函数问题。换其他网页是行的。

kood481748 发表于 2012-5-3 17:05:48

回复 2# shqf

你换什么网页是行的?告诉我一下

shqf 发表于 2012-5-4 13:11:37

我用了_IE_Example没有问题,能取到框架数及框架对象的有关内容。代码如下:#include <IE.au3>
;$oIE = _IECreate(@ScriptDir & "\kuanjia1.htm")
$oIE = _IE_Example("iframe")
$oFrames = _IEFrameGetCollection($oIE)
$iNumFrames = @extended
For $i = 0 To $iNumFrames - 1
        $oFrame = _IEFrameGetCollection($oIE, $i)
        ;$html = _IEDocReadHTML($oFrame)
        MsgBox(4096, "Frame Info", _IEPropertyGet($oFrame, "locationurl") & @LF & _IEPropertyGet($oFrame, "outerhtml"))
Next后将kuanjia1.htm的内容改成如下:<html><head><title>框架试验</title></head>
<center>下面是框架</center><br>
<body bgcolor="#DAA520">
<center>
<IFRAME SRC=file:///c:/1.htm>
<IFRAME SRC=http://www.baidu.com>
</center>
</html>并在C盘根目录下随便建个文件1.txt,上面的AU3代码中起用$oIE = _IECreate(@ScriptDir & "\kuanjia1.htm"),注释掉此句$oIE = _IE_Example("iframe")后,_IEFrameGetCollection()函数能获取到框架数,但对不是本地的框架内容获取错误,大部分为空.但对网页如http://www.zhijinwang.com/能获取到一点儿内容,但也有怪现象,获取到的框架数很多。
本人觉得是_IEFrameGetCollection()有问题,对不是本地的网页操作有错误。论坛各位达人再测试确定一下?

kood481748 发表于 2012-5-4 22:05:12

回复 4# shqf

我也是觉得是_IEFrameGetCollection()有问题,对不是本地的网页操作有错误
我的脚本中必须要使用_IECreate(),并且那个htm文件不能修改它,因为它是某个网站的页面,并不是本地的页面,我只是拿来演示的
页: [1]
查看完整版本: 如何操作网页框架中的表单?