点击网站上的JavaScript链接

时间:2016-07-01 09:56:54

标签: javascript html excel vba excel-vba

我正在尝试通过VBA自动生成我银行网站的报告。

我设法访问该网站并插入我的用户ID和密码,没有任何问题。我已经到达了我可以正常生成报告的页面。 现在我必须模拟链接上的点击......但我无法做到这一点。

以下是该网站的屏幕截图,其中包含我必须点击的链接的HTML代码以生成报告(摘要报告复制)。

screenshot

以下是我需要点击的链接的HTML代码:

<a id="irCustomStepOne:headerDataTableId:23:reportnamestatus" href="#"  style="float:left;" title="Summary Report Copy" onclick="jsf.util.chain(this,event,'if(isDateValidForMassPayPD()==\'false\' &amp; isWareHouseRptPD(\'23\') ==\'true\'){RichFaces.$(\'irCustomStepOne:panelWareHouseRptError\').show(event, {\'top\':\'100px\', \'left\':\'300px\'});return false;}else{if(!onReportLink(\'23\')) return false;}','mojarra.jsfcljs(document.getElementById(\'irCustomStepOne\'),{\'irCustomStepOne:headerDataTableId:23:reportnamestatus\':\'irCustomStepOne:headerDataTableId:23:reportnamestatus\',\'repId\':\'3368127\',\'dayTypeKey\':\'PREVIOUS_DAY\',\'userAction\':\'Run\'},\'_blank\')');return false" class="">Summary Report Copy</a>

我已经尝试过这行VBA代码,但不起作用:

  

IE.Document.getElementById(“irCustomStepOne:headerDataTableId:23:reportnamestatus”)。FireEvent“onclick”

如何通过VBA点击此“摘要报告复制”?

以下是链接所在网页部分的完整HTML代码。也许我没有使用正确的ID?

 <td width="290px">
 <span id="irCustomStepOne:headerDataTableId:23:reportNmGrp">
 <a id="irCustomStepOne:headerDataTableId:23:reportnamestatus" href="#" style="float:left;" title="Summary Report Copy" onclick="jsf.util.chain(this,event,'if(isDateValidForMassPayPD()==\'false\' &amp; isWareHouseRptPD(\'23\') ==\'true\'){RichFaces.$(\'irCustomStepOne:panelWareHouseRptError\').show(event, {\'top\':\'100px\', \'left\':\'300px\'});return false;}else{if(!onReportLink(\'23\')) return false;}','mojarra.jsfcljs(document.getElementById(\'irCustomStepOne\'),{\'irCustomStepOne:headerDataTableId:23:reportnamestatus\':\'irCustomStepOne:headerDataTableId:23:reportnamestatus\',\'repId\':\'3368127\',\'dayTypeKey\':\'PREVIOUS_DAY\',\'userAction\':\'Run\'},\'_blank\')');return false">Summary Report Copy</a>
 <a id="irCustomStepOne:headerDataTableId:23:reportnamePrint" href="#" style="float:left;display:none;" title="Summary Report Copy" onclick="jsf.util.chain(this,event,'if (!onReportLink(\'23\')) return false;','mojarra.jsfcljs(document.getElementById(\'irCustomStepOne\'),{\'irCustomStepOne:headerDataTableId:23:reportnamePrint\':\'irCustomStepOne:headerDataTableId:23:reportnamePrint\',\'repId\':\'3368127\',\'dayTypeKey\':\'PREVIOUS_DAY\',\'userAction\':\'Print\'},\'_blank\')');return false">Summary Report Copy</a>
 <span id="irCustomStepOne:headerDataTableId:23:rpId" style="float:left;display:none;">3368127</span>
 </span>
 </td>

2 个答案:

答案 0 :(得分:0)

您可能必须等待页面完全加载。像

这样的东西
Do: VBA.DoEvents: Loop While IE.Busy ' wait for the page to load
Dim el 'As IHTMLElement
Set el = IE.Document.getElementById("irCustomStepOne:headerDataTableId:23:reportnamestat‌​us")
If el Is Nothing Then el = IE.Document.querySelector("a[title='Summary Report Copy']")
If el Is Nothing Then MsgBox("Link not found!") : Exit Sub
el.click
Do: VBA.DoEvents: Loop While IE.Busy ' wait for next page to load

答案 1 :(得分:0)

这一直对我有用。请试试:

For each lnk in IE.Document.getElementByTagName("a") 
If lnk.ID = "irCustomStepOne:headerDataTableId:23:reportnamestat‌​us" Then
    lnk.Click
    Exit For
Next
相关问题