娱乐新地带论坛

娱乐新地带论坛 (https://bbs.1819.net/index.php)
-   『程序设计』 (https://bbs.1819.net/forumdisplay.php?f=20)
-   -   关于Autoit在IE中调用js函数的方法问题 (https://bbs.1819.net/showthread.php?t=77730)

Tony 2014-06-19 09:46 PM

关于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()")



所有时间均为北京时间。现在的时间是 09:57 PM

©2003-2024 1819.net All rights reserved. © 2024