娱乐新地带论坛  

返回   娱乐新地带论坛 > 电脑技术 > 『程序设计』

『程序设计』 不太懂编程,主要用来搜集例子,源码等...

发表新主题 回复
 
主题工具 显示模式
旧 2014-06-19, 09:46 PM   #1
No1
Tony
坛主
级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时级别:199 | 在线时长:40426小时 | 升级还需:374小时
 
Tony 的头像
 
注册日期: 2003-10-22
帖子: 11,053
积分:6
精华:24
现金:14348金币
资产:29325305金币
Tony 是一位成功的新星Tony 是一位成功的新星Tony 是一位成功的新星Tony 是一位成功的新星
关于Autoit在IE中调用js函数的方法问题

Autoit在对网页编程中有一个自定义函数库IE.au3,里边有很多关于网页操作的函数。最近在写一个网页游戏外挂时遇到调用js脚本函数的问题,需要用Autoit对网页进行操作,调用js文件中的一个函数。
查遍Autoit的所有帮助文件,发现这个功能在IE.au3中并没有提供。
最后,在一篇关于网页编程的资料中发现了一个方法,可以实现Autoit调用js脚本函数的方法。
用一个实例来说明一下
这个例子是实现自动登录中华英才网会员区的,网址为:http://beijing.chinahr.com/。
首先观察一下会员登录区的Form代码:

HTML 代码:
<form method="post" name="frmlogin" id="frmlogin" />
<div class="m_r">
<div class="chr_logn" id="logb"><div class="rzmtips dis_n" id="rzml"><span>注册并填写简历</span></div>
        <h1>个人用户登录</h1>
            <div>
            <div class="l_t"><a href="http://my.chinahr.com/register.aspx" class="butn_rzm" onmouseover="mouse('rzml','rzmtips')" onmouseout="mouse('rzml','rzmtips dis_n')">填简历</a><a href="http://my.chinahr.com/PwdReminder.aspx" class="gren">忘记密码</a><a href="http://my.chinahr.com/register.aspx" class="gren">注册账户</a></div>
                <div class="l_l">
                    <input type="text" name="username" id="LoginModule_ascx_tbUserName"  class="inp col_b" value="请输入用户名" onclick="ClearTips(this, '请输入用户名');" onblur="SetTips(this, '请输入用户名');" onfocus="this.select()" />
                <input  type="password" name="password" id="LoginModule_ascx_tbPassword" class="inp col_b" value="请输入密码哦" onclick="ClearTips(this, '请输入密码哦');" onblur="SetTips(this, '');" onfocus="this.select()" />
                    <input type="hidden" id="v" name="v" value="2" />
                    <!--<Select id="LoginModule_ascx_ddlDomain" name="LoginModule_ascx$ddlDomain" style="display:none;"> <OPTION value="1" selected>个人服务</OPTION> </Select>-->
 
                    <p>
                        <input name="ckm" id="ckm"  type="checkbox" value="ckml" class="chk"/><label for="ckm">记住我</label><input type="submit" class="butn_log"  onclick="Javascript:return checkform();" value="登录" onmouseover="this.className='butn_log_h'" onmouseout="this.className='butn_log'"/><br/>
                    </p>
                </div>
            </div> 
</div>
<div class="chr_logn chr_logn_a dis_n" id="loga">
    <h1><span class="c_l" id="logname"></span><span class="c_r"><a href="http://my.chinahr.com/logout.aspx?ReturnUrl=http://www.chinahr.com/index.htm" class="gren">退出</a></span></h1>
          <div class="txt" id="logcontent">
         </div>
</div>
</div>
</form>
这个登录是比较特殊的,与其他表单提交的方法不同,这里是触发了一个onclick="Javascript:return checkform();"实现的提交,所以使用Autoit中提供的_IEFormSubmit函数并不能实现自动提交功能。
所以必须用Autoit去调用checkform()函数来实现。
实现代码如下:

HTML 代码:
$oIE = _IECreate("http://www.chinahr.com")
WinSetState("中华英才网", "", @SW_MAXIMIZE)
$o_form = _IEFormGetObjByName($oIE, "frmlogin")              ;找到表单
$o_txtuser = _IEFormElementGetObjByName($o_form, "username") ;找到表单中的用户名
$o_txtpass = _IEFormElementGetObjByName($o_form, "password") ;找到表单中的 密码
_IEFormElementSetValue($o_txtuser, "duxt123")                ;你的登录帐号
_IEFormElementSetValue($o_txtpass, "chinahr.com")            ;你的登录密码
$result = $oIE.document.parentWindow.eval_r("checkform()")     ;以下两种方法实现调用checkform()函数
;$oIE.document.parentWindow.execscript("checkform()")
 
Tony 的签名
古代人有点功夫就研究长生不老,现代人忙完一天只有不想活了!
Tony 当前离线  
回复时引用此帖
发表新主题 回复

书签


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转


所有时间均为北京时间。现在的时间是 07:58 AM


©2003-2024 1819.net All rights reserved.