找回密码
 加入
搜索
查看: 5923|回复: 9

[IE类操作] 付费求助,IE框架填表失败,是什么原因!

  [复制链接]
发表于 2013-5-19 16:51:33 | 显示全部楼层 |阅读模式
本帖最后由 heavenm 于 2013-5-19 16:52 编辑



http://item.taobao.com/item.htm?id=17045692386
= =#QQ10263646
框架无法填表!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2013-5-19 16:57:19 | 显示全部楼层
#include <IE.au3>
$oIE = _IEAttach("http://item.taobao.com/item.htm", "url")
Local $oFrame = _IEFrameGetCollection($oIE,0)
$oFrame2=_IEFormGetObjByName($oFrame, "J_StaticForm")
$oQuery = _IEFormElementGetObjByName($oFrame2, "TPL_username")
_IEFormElementSetValue($oFrame, "AutoIt IE.au3")
按道理说应该是这样子对吧!但是不行
 楼主| 发表于 2013-5-19 18:21:57 | 显示全部楼层
最主要的原因是跨域了吧!
= =#难道只能用点击的方式了么
发表于 2013-5-20 11:06:21 | 显示全部楼层

淘宝登录代码-我一直在用的!

本帖最后由 xlj310 于 2013-5-20 11:10 编辑

这个我一直在用呀,So Easy!!!

自已给$name$pass分别赋值你的用户名和密码,然后调用下面这个函数即可!

Func login()
        
        $oIE=_IECreate("https://login.taobao.com/member/login.jhtml?style=miniall")

        _IELinkClickByText($oIE,'使用其他账户登录')
        $SafeKongJian=_IEGetObjById($oIE,"J_SafeLoginCheck")
        _IEAction($SafeKongJian,'click')
        
        Local $oForm = _IEFormGetObjByName($oIE, "J_StaticForm")
        Local $oLoginName = _IEFormElementGetObjByName($oForm, "TPL_username_1")
        Local $oLoginPass = _IEFormElementGetObjByName($oForm, "TPL_password_1")
        
        _IEFormReset($oForm)
        
        _IEFormElementSetValue($oLoginName,$name)
        _IEFormElementSetValue($oLoginPass,$pass)
        _IEFormSubmit($oForm,0);提交表单,立即返回
        
        _IELoadWait($oIE)
        Sleep(500)        
EndFunc
 楼主| 发表于 2013-5-21 14:15:29 | 显示全部楼层
4楼误会了!直接这种登录框很容易搞定的
是淘宝的另一个iframe登录框
在购买商品时候会出现的
这个iframe是跨域的!所以无法直接操作!
关键问题在于iframe跨域
发表于 2013-5-21 22:58:28 | 显示全部楼层
4楼是在直接登录的情况下 ,比如 https://login.taobao.com ,可以登录。但是像楼主说的页面,看了下代码,没看出来。支持下楼主,期待高手解答。
发表于 2013-5-22 09:33:56 | 显示全部楼层

条条大路通罗马,没有飞机可乘,坐船走水路未尝不可!

本帖最后由 xlj310 于 2013-5-22 09:58 编辑

回复 5# heavenm

  看网页源代码, 有一个id=J_LoginContainer,对容器不熟!而且Au3中也没有发现对IE容器操作相关的函数!所以有兴趣的可继续研究!
      
    

$oIE=_IEAttach("http://item.taobao.com/item.htm?id=17045692386","URL")
Local $oFrame = _IEFrameGetObjByName($oIE, "LoginFrame")
MsgBox(0,'浮动框',$oFrame)

这个浮动框倒是可以获取到句柄,但操作其内部控件的函数却没有!上面的代码说明是可以获取到浮动框句柄的。所以有兴趣的高手请继续研究!

下面的思路是,强制登录一次!效果跟你点击“立刻购买”弹出那个登录框,登录后的效果是一样的! PS:买不起汽车,踩踩单车也是可以的!知足常乐!

#include<IE.au3>
$name=""
$pass=""
If $name="" Or $pass="" Then
        MsgBox(16,'存在空值','请先赋值 $name 和 $pass ')
        Exit
EndIf

$url="http://item.taobao.com/item.htm?id=17045692386"

$oIE=_IEAttach($url,"URL")
If $oIE=0 Then $oIE=_IECreate($url);如果网址匹配不成功

_IENavigate($oIE,"https://login.taobao.com/member/login.jhtml?style=mini&redirectURL="&$url)

_IELinkClickByText($oIE,'使用其他账户登录');如果电脑上登录了旺旺,需要先点使用其他账户登录。
$SafeKongJian=_IEGetObjById($oIE,"J_SafeLoginCheck")
_IEAction($SafeKongJian,'click')
Local $oForm = _IEFormGetObjByName($oIE, "J_StaticForm")
Local $oLoginName = _IEFormElementGetObjByName($oForm, "TPL_username_1")
Local $oLoginPass = _IEFormElementGetObjByName($oForm, "TPL_password_1")

_IEFormReset($oForm)


_IEFormElementSetValue($oLoginName,$name)
_IEFormElementSetValue($oLoginPass,$pass)

_IEFormSubmit($oForm,0);提交表单,立即返回

_IELoadWait($oIE)        

 楼主| 发表于 2013-5-23 16:10:22 | 显示全部楼层
嗯 现在就是用的间接的方法来实现!
发表于 2013-5-24 15:45:05 | 显示全部楼层
回复 5# heavenm

我现在做的项目也有一个是关于iframe的,实在没找到方法。
解决方法是:
把整个网页的host和这个iframe的连接拼起来,再打开这个新连接
这样就能操作iframe里面的元素了,但是不知道对于你这个适用不
 楼主| 发表于 2013-5-25 02:32:37 | 显示全部楼层
回复  heavenm

我现在做的项目也有一个是关于iframe的,实在没找到方法。
解决方法是:
把整个网页的 ...
wiley_wang 发表于 2013-5-24 15:45


那样子太复杂了,还不如我再新建内置窗口打开框架
= =没解决办法也只能将就用了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-29 16:44 , Processed in 0.079157 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表