AutoIt v3:_IENavigate + _IELoadWait没有按预期工作?

时间:2014-10-02 04:34:03

标签: browser navigation automation autoit

此代码应该在“www.website.com”上打开一个新的浏览器,提交用户名和密码,等待提交后加载页面,导航到新页面,并将javascript代码注入地址栏。

我目前的代码结果是在“www.website.com”上打开一个新的浏览器,提交用户名和密码。提交工作,然后从这里开始,代码中断,而不是导航到下一页(第2页),它只是挂起。

即使我在_IEFormSubmit($ oForm)中添加了ignore命令,也无法让我的页面导航到下一页。

#include <IE.au3>

#RequireAdmin

Local $oIE = _IECreate("http://www.website.com")
;_IELinkClickByText($oIE, "Sign In") ;Optional
Local $oForm = _IEFormGetObjByName($oIE, "regular-user-login-form")
Local $oText = _IEFormElementGetObjByName($oForm, "log")
_IEFormElementSetValue($oText, "username")
Local $oText = _IEFormElementGetObjByName($oForm, "pwd")
_IEFormElementSetValue($oText, "password")
_IEFormSubmit($oForm)

_IENavigate($oIE, "http://www.website.com/page2/")

Send("{F4}javascript:check_in();{ENTER}")

请为了上帝的爱,我做错了什么。

编辑:我也将_IEFormSubmit($ oForm)更改为另一个javascript提交,我仍然可以毫无问题地登录,但是一旦我到达下一页,我就无法使用_IENavigate,所以问题必须说谎那里。

1 个答案:

答案 0 :(得分:0)

我已经自动化了很多不同的页面,有时候脚本会无缘无故地卡在_IEFormSubmit上。这是一个AutoIt错误。

她快速解决了这个问题

_IEFormSubmit($oForm, 0)
_IELoadWait($oIE, 1000)

您的代码应为:

#include <IE.au3>

#RequireAdmin

Local $oIE = _IECreate("http://www.website.com")
;_IELinkClickByText($oIE, "Sign In") ;Optional
Local $oForm = _IEFormGetObjByName($oIE, "regular-user-login-form")
Local $oText = _IEFormElementGetObjByName($oForm, "log")
_IEFormElementSetValue($oText, "username")
Local $oText = _IEFormElementGetObjByName($oForm, "pwd")
_IEFormElementSetValue($oText, "password")
_IEFormSubmit($oForm, 0)
_IELoadWait($oIE, 1000)

_IENavigate($oIE, "http://www.website.com/page2/")

Send("{F4}javascript:check_in();{ENTER}")

有一次,我试图向自动论坛报告两个错误,但那里的那些人非常沮丧。所以,现在当我找到一个时,我就这样解决了。

非主题:

处理对象时,您应该知道另一个错误

If $oInput.outertext = "Continue" then ...

即使outertext匹配,上述代码有时也会失败。 使用

解决这个问题
If $oInput.outertext == "Continue" then ...