自动热键单击JavaScript超链接

自动热键单击JavaScript超链接,javascript,internet-explorer,hyperlink,autohotkey,Javascript,Internet Explorer,Hyperlink,Autohotkey,我正在为我的公司开发一个AHK脚本,以便在Internet Explorer界面上自动化一些繁琐的手动处理。到目前为止,我已经能够创建IE的实例,检测它是否存在/是否处于活动状态,并且我能够“getElementById”来填充文本字段、设置焦点、检索值并单击按钮 但最后一步,我想不出来:这个界面上有几个链接,它们不是简单的URL超链接,而是指向另一个页面的链接。其中一个上的“检查元素”显示以下HTML代码: <span class="relatedLink" id="a_statusCh

我正在为我的公司开发一个AHK脚本,以便在Internet Explorer界面上自动化一些繁琐的手动处理。到目前为止,我已经能够创建IE的实例,检测它是否存在/是否处于活动状态,并且我能够“getElementById”来填充文本字段、设置焦点、检索值并单击按钮

但最后一步,我想不出来:这个界面上有几个链接,它们不是简单的URL超链接,而是指向另一个页面的链接。其中一个上的“检查元素”显示以下HTML代码:

<span class="relatedLink" id="a_statusChangeLink" style="color: blue;" onclick="javascript:openWindowL('StatusChange.aspx?Co=ABC&Cov=001&Ident=AAAAA&Digest=0obCAhixDLtLZRc10og9fNmgf0F&PhzKUudf2spZF14')">Change Status</span>
更改状态
其中有几个链接并排出现,我已经能够使用“relatedLink”类“getElementsByClass”,并匹配其中的一个。innerText=“Change Status”。该类中链接数组的索引为9。我的问题?.Click()属性不起作用。正如您从HTML代码片段中看到的,它触发一个JS函数,打开另一个窗口。我试图“导航”到onclick链接,但“摘要”参数是一个每次都会更改的键。仅供参考,这些链接仅在单击按钮后才会显示在页面上;他们以前不在那里

我试过这个: 但它仍然归结为只发送一个点击,而这并没有任何作用:/。我也尝试过多次点击,但都没有用

非常感谢您提供的任何建议:)

我的相关代码:

IELoad(myWB)
{
    If !myWB
        Return False
    Loop
        Sleep, 50
    Until (myWb.Busy)
    Loop
        Sleep, 100
    Until (!myWB.Busy)
    Loop
        Sleep, 500
    Until (myWB.Document.Readystate = "Complete")
}
^t::    
    myWB := ComObjCreate("InternetExplorer.Application")
    myWB.Visible := True
    myWB.Navigate("http://blabla.domain.local/blah.aspx")
    IELoad(myWB)
    MsgBox, 64, Loaded, Loaded!
    If WinActive("ahk_class IEFrame") > 0
    {
        SetTitleMatchMode, 2
        WinGetActiveTitle, myTitle
            if InStr(myTitle, "Blah") > 0
            {
                ;MAIN CODE HERE
                myWB.document.getElementById("a_TransactionButton").Click()
                IELoad(myWB)
                Sleep, 500

                ;Now the links appear - We want id=a_statusChangeLink

                While (myVal <> "Change Status")
                    myVal:= myWB.document.getElementsByClassName("relatedLink")[A_Index].innerText, index := A_Index
                MsgBox, 64, Test, Count is: %myVal% and index is: %index%
                myWB.document.getElementsByClassName("relatedLink")[index].Click()

                ;This is an alternative way of getting that element

                links := myWB.document.getElementsByClassName("relatedLink")
                Loop, % links.length
                    n := A_Index - 1
                Until, links[n].innerText = "Change Status"
                links.item(n).click()

                ExitApp         
            }else
            {
                MsgBox, 64, Window not found, I did not detect an active Blah window...
                ExitApp
            }
    }
    MsgBox, 64, IE Not Found, I did not detect an active IE window...
    ExitApp
return

Esc::ExitApp
IELoad(myWB)
{
如果!myWB
返回错误
环
睡觉,50
直到(myWb.Busy)
环
睡吧,100
直到(!myWB.Busy)
环
睡吧,500
直到(myWB.Document.Readystate=“完成”)
}
^t::
myWB:=ComObjCreate(“InternetExplorer.Application”)
myWB.Visible:=True
myWB.Navigate(“http://blabla.domain.local/blah.aspx")
IELoad(myWB)
MsgBox,64,加载,加载!
如果WinActive(“ahk_类IEFrame”)>0
{
SetTitleMatchMode,2
我的头衔
如果仪表(我的标题,“废话”)>0
{
;这里是主代码
myWB.document.getElementById(“a_TransactionButton”)。单击()
IELoad(myWB)
睡吧,500
;现在链接出现-我们希望id=a_statusChangeLink
While(myVal“更改状态”)
myVal:=myWB.document.getElementsByClassName(“relatedLink”)[A_索引]。innerText,索引:=A_索引
MsgBox,64,测试,计数为:%myVal%,索引为:%index%
myWB.document.GetElementsByCassName(“relatedLink”)[index]。单击()
;这是获取该元素的另一种方法
links:=myWB.document.getElementsByClassName(“relatedLink”)
循环,%links.length
n:=A_指数-1
直到,链接[n]。innerText=“更改状态”
links.item(n).单击()
出口
}否则
{
MsgBox,64,未找到窗口,我未检测到活动的Blah窗口。。。
出口
}
}
MsgBox,64,IE未找到,我未检测到活动的IE窗口。。。
出口
返回
Esc::ExitApp

TL;博士请编辑您的问题,只添加您正面临的确切问题以及期望的结果。另外,如果是代码问题/错误,请包含对我们调试有用的代码OK done-尝试具体说明我到目前为止的尝试。并添加了代码。非常感谢。